THE WELCH COMPANY
440 Davis Court #1602
San Francisco, CA 94111-2496
415 781 5700
rodwelch@pacbell.net


S U M M A R Y


DIARY: November 7, 2004 05:17 PM Sunday; Rod Welch

Contacts modify SDS to list selected individuals in indexes.

1...Summary/Objective
2...Precision Access Automatic Multiple Listings Save Time Money
3...Contacts Powerful Data Base Maintained Minimal Time Expertise
4...Alphabetical List of People for Organizational Contacts
5...Contacts Simplify Complexity of Relationships People Organizations
6...Scope Contacts System Manages Steady Identification Data
7...Individuals Contacts Manages Details Identification People
8...Wicked Problems Solved Writing Things Down Linking Things Up
9...Counter Fails on Highlighted Individual Contact Name Line
10...0705051 Develop loop to create multiple listings for a Contact
11...Remove Prior Names from Alphabetical Contact Files
12...Summaries Update Alphabetical Lists
13...Repetitive Dates Update
14...Remove Prior Entries All Alphabetical Lists for This Record
15...Alphabetical List Individual Contact Names for Organizations
16...Individual Contact Names Process for Organizational Alphabetical List
17...Delete Prior Individuals from Organizational Alphabetical Listing
18...Report on Contacts PA9

ACTION ITEMS.................. Click here to comment!

1...We need to carefully analyse the code in 0705051 for saving a Contact
2...Gary has commented on how "complicated" the SDS Contacts system seems
3...We could create an option, like Alt F2, to open a record at

CONTACTS 

SUBJECTS
F2 Open Contact Record to Person Name Line
Contacts Save F2 List Individuals Everyone Marked by * in Alphabetic
Contacts Improvements Managing Multiple Relationships Individual Emp
Multiple Relationships Individual Employees Listed Alphabetically in
Planning and Concepts

0907 -
0907 -    ..
0908 - Summary/Objective
0909 -
090901 - Follow up ref SDS 4 0000, ref SDS 2 XT7A.
090902 -
090903 - Improve method of listing names of people who work for organizations
090904 - in the alphabetical list, and to do this comprehensively and
090905 - automatically, rather than require someone to key in the data twice,
090906 - required by the prior system.  When a contact record for an
090907 - organization, the line with the name of the Contact person in the
090908 - organization selected by the User is positioned in the middle of the
090909 - screen. ref SDS 0 OY6H  This record also reviews the scope of contact
090910 - records for managing steady state data. ref SDS 0 CR6F
090912 -  ..
090913 - We need to carefully analyse the code in 0705051 for saving a Contact
090914 - record.
090915 -
090916 -     [On 041206 added functionality and changed code design to
090917 -     implement improvements today. ref SDS 12 0001
090918 -
090919 -
090921 -  ..
0910 -
0911 -
0912 - Evaluation
0913 -
091301 - Precision Access Automatic Multiple Listings Save Time Money
091302 - Contacts Powerful Data Base Maintained Minimal Time Expertise
091303 -
091304 - Follow up ref SDS 8 6O8S, ref SDS 5 N63H.
091305 -
091306 - This improvement eliminates hundreds of keystrokes and considerable
091307 - time for listing employees of organizations in the alphabetical
091308 - contact list.  Adding employees to the alphabetical list for
091309 - organizations reduces the time required to find people to make a call,
091310 - write a letter, report on a meeting, or look up related history.  A
091311 - collateral improvement is opening Contact records to the name of the
091312 - person listed in the Summary. Support for precision access saves time
091313 - and money.
091315 -  ..
091316 - Applying three (3) criteria shown on 030810, ref SDS 3 VO9K, support
091317 - for Contacts developed today is...
091318 -
091319 -    1.  Fast and easy to use, hard to cause a failure, with no loss of
091320 -        performance, and no need to update existing records.
091321 -        ref SDS 0 VO5T
091323 -         ..
091324 -    2.  Existing procedures either remain the same or are improved, so
091325 -        there is minimal learning curve -- things work better with
091326 -        existing skills. ref SDS 0 VP37
091328 -         ..
091329 -    3.  Memory management is not a factor.
091330 -
091332 -  ..
091333 - There are two functions addressed by this change....
091334 -
091335 -    1.  F2 in a Contact Summary used to open a Contact record.  The
091336 -        code now automatically places the name of the person listed in
091337 -        the summary in the middle of the visible screen.  No additional
091338 -        effort is required.  This eliminates having to enter employees
091339 -        twice to list them in the organization alphabtical lists.
091340 -
091341 -            [On 041206 added functionality and changed code design to
091342 -            implement improvements today. ref SDS 12 0001
091344 -         ..
091345 -        Names appear in alphabetical summaries, as follows...
091346 -
091347 -            a.  Highlighted names appear in individual alphabetical
091348 -                summaries.
091349 -
091350 -                If you don't want to list a contact person in an
091351 -                alphabetical summary, don't highlight the line.  The
091352 -                type of highlight flag is not relevant.
091354 -                 ..
091355 -            b.  Names with "*" in column 9 are listed with the
091356 -                organization name.  This facilitates selecting a bunch
091357 -                of people from same organzation for entry in an SDS
091358 -                record to identify who attended meetings.
091360 -                 ..
091361 -                If you don't want to list a contact person with an
091362 -                organization listing, then don't put a * on the line in
091363 -                column 9.
091365 -         ..
091366 -        Appearance of the alphabetical lists is improved.  Previously,
091367 -        when an employee was listed in the alternate name field of a
091368 -        Contact record, that person's name appeared along with the name
091369 -        of the primary individual in the record.  Thus, alphabetical
091370 -        contacts might show ..
091371 -
091372 -            Smith, Fred              406 224 1243  Fred Smith
091373 -            Williams, Brenda         406 224 2538  Fred Smith
091374 -            Jones, Tom               406 224 3715  Fred Smith
091375 -
091376 -        ...which conveys nothing about relationship with an
091377 -        organization.
091379 -         ..
091380 -        Now this list will look like...
091381 -
091382 -            Smith, Fred              406 224 1243  Fabulous Co, Inc
091383 -            Williams, Brenda         406 224 2538  World Exports, Inc
091384 -            Jones, Tom               406 224 3715  National Travel Co
091385 -
091386 -
091388 -         ..
091389 -    2.  F2 in a Contact record now maintains an inventory of all
091390 -        alphabetical summaries that apply to the record, this includes
091391 -        the name of the organization, any alternate names, and all
091392 -        employees.  When F2 is pressed, all listings for the current
091393 -        record are removed from all alphabetical summary files using
091394 -        the inventory constructed from the prior save.  The program
091395 -        then constructs new entries in alphabetical contact files for
091396 -        all employees and alternate listings for the organization.
091397 -        This procedure allows people to add and remove employees, and
091398 -        the alphabetical listings are maintained automatically.
091400 -         ..
091401 -        Personal contacts have the same support, except there are no
091402 -        employees in personal contact records. However, individuals can
091403 -        have alternate listings for themselves, and/or relatives at the
091404 -        same address, e.g., children.  This provides a single
091405 -        addressing op for each physical address in the system.
091406 -
091407 -
091408 -
091409 -
091410 -
0915 -

SUBJECTS
Contacts Save F2 List Individuals Everyone Marked by * in A  habetic
Contacts Complex Because People Organizations Primary Path for Under

1104 -
1105 - Planning
110601 -  ..
110602 - Alphabetical List of People for Organizational Contacts
110603 -
110604 - This continues work on 040615 to list names of individuals who work
110605 - for organizations so that people can find the names in an alphabetical
110606 - list of organizations. ref SDS 4 BX6K
110607 -
110608 -     [On 041206 added functionality and changed code design to
110609 -     implement improvements today. ref SDS 12 0001
110611 -  ..
110612 - Initial planning focuses on using the * character to select names of
110613 - people for alphabetical listing, however, further consideration
110614 - suggests all names should be listed.
110616 -  ..
110617 - Another consideration is how to handle situations where people change
110618 - assignments.  We need to maintain original assignments in order to
110619 - retain ability to perform research with reporting.  How then to give
110620 - user's control listing only current assignments, and not duplicate
110621 - entries past assignments.
110623 -  ..
110624 - One solution might be to assign flags to lines with names of people
110625 - who have changed assignments, i.e., moved to different departments.  A
110626 - line with no flag, for example, could be omitted from alphabetical
110627 - lists.  We could check column 4, and if there is an "s" flag, this
110628 - name would be suppressed.  Using "s" fits the method developed to
110629 - suppress lines in SDS records and in documents.
110630 -
110631 -
110633 -  ..
110634 - Contacts Simplify Complexity of Relationships People Organizations
110635 -
110636 - Follow up ref SDS 1 4741.
110637 -
110638 - Gary has commented on how "complicated" the SDS Contacts system seems
110639 - to be.  This reflects the fact that life is complex.  People need
110640 - control of many interdependent factors that influence management
110641 - tasks, explained on 980601. ref SDS 1 4741  Relationships between
110642 - people and organizations vary widely, noted in the record on 0410104,
110643 - ref SDS 6 LD4P, and outlined below. ref SDS 0 CR6F  Wide variance of
110644 - many interdependent factors defines complexity, which SDS helps people
110645 - manage in harmony with everything else, by pressing buttons on a
110646 - keyboard rather than shuffling file folders, using contact programs,
110647 - phone books, email, spreadsheets, PDMs, PIMS, and personal memory.
110649 -  ..
110650 - However, since most factors only arise occassionally, as previously
110651 - explained on 980601, ref SDS 1 4741, this greatly compounds the
110652 - learning curve, as follows...
110654 -  ..
110655 - Say there are 10 functions and 10 fields or 20 total elements for a
110656 - contact record.  Only 4 of the 20 elements are needed consistently.
110657 - Another 4 are needed, for a total of 8 each time a contact record is
110658 - opened; however, these other 4 elements occur randomly across the
110659 - remaining 16 elements.  If contact records are only used say 4 times a
110660 - month, then 16 of the 20 elements are only used once every 4 months.
110661 - If contacts are only used once every 2 months, then some elements only
110662 - come up every 8 months.  Using functions every 4 - 8 months makes them
110663 - hard to learn and remember.  Since productivity requires expansive
110664 - control using all of the functions, infrequent use compounds the
110665 - learning curve, which is frustrating.  When people get frustrated,
110666 - they give up.
110668 -  ..
110669 - One solution is supported by SDS.  Not every field in every contact
110670 - record need be used.  SDS is helpful by using only a few common
110671 - fields, and this lowers the learning curve, which also reduces
110672 - frustration.
110674 -  ..
110675 - "Contacts" seem like a good first target of opportunity to begin
110676 - transition development of a next generation version of SDS,
110677 - implementing plans on 040927. ref SDS 5 RH5Y  Maybe a Contacts system
110678 - could be a stand alone product that has hooks needed for SDS.  People
110679 - understand "Contacts."  There is a natural biological affinity to
110680 - place people first, based on telecon with Woody on 041004. ref SDS 6
110681 - LD4P  A few days ago on 041104 Gary's research on TOC found
110682 - attribution to John Boyd for TQM-type concept of organizing work based
110683 - on a trinity of people first, then ideas and things. ref SDS 7 OG6L
110684 - This makes Contacts software a good target of opportuity for a first
110685 - release of SDS software.
110687 -  ..
110688 - Similar approach could be done with a Schedule program, then a Diary
110689 - or Journal program.  Then something that integrates everything.
110691 -  ..
110692 - This provides a development path for transitioning SDS to a Windows
110693 - application.
110694 -
110695 -        [On 041111 Gary submitted research showing productivity using
110696 -        the Maxthink program was not appreciably improved by developing
110697 -        a Windows GUI version. ref SDS 8 H17J
110698 -
110699 -
110700 -
110701 -
1108 -

SUBJECTS
Scope Organizations Contacts System Explanation Fields Application t
Contacts Data Base Common for Everyone but Managed Separately Using

1304 -
130501 -  ..
130502 - Scope Contacts System Manages Steady Identification Data
130503 -
130504 - Contacts provide information on identification that remains relatively
130505 - constant for long periods.  This concept is applied to two (2)
130506 - distinct, yet related types of contacts:  organizations and people...
130507 -
130508 -    a.  Organizations identification
130509 -
130510 -        1.  Look up names with associated ways to contact people by
130511 -            telephone, visiting, mail.
130513 -             ..
130514 -            This requires business number, extension, main number,
130515 -            cell phone, mobile phone, and anything else needed to be
130516 -            effective contacting people.
130518 -             ..
130519 -            Program code must quickly and accuratly distinguish between
130520 -            context to inform the user for productivity getting things
130521 -            done, and protecting confidentiality of others suppressing
130522 -            certain contact information when distributing the record to
130523 -            others either on the Internet or via private communication.
130525 -             ..
130526 -        2.  Convey position, authority, expertise, relationahips.
130528 -             ..
130529 -        3.  Diagnostics track need for continued use, and other
130530 -            factors.
130532 -             ..
130533 -        4.  Business and purpose of organization explains categories
130534 -            for use, and enables looking up groups of organizations for
130535 -            accomplishing tasks.
130537 -             ..
130538 -        5.  Comments field enables a narrative on why the organization
130539 -            is listed that provides orientation on expending resources
130540 -            to maintain a Contact.
130542 -             ..
130543 -        6.  Maintain Document Log of correspondence in minimal time to
130544 -            perform legal duty of notice.
130546 -             ..
130547 -        7.  Maintain Document Log for finding documents based on author
130548 -            addressee.
130550 -             ..
130551 -        8.  Physical address enables visiting organization.
130553 -             ..
130554 -        9.  Letterhead address often different from physical address
130555 -            needed for correspondence.
130557 -             ..
130558 -       10.  Mailing address different from letterhead and sometimes
130559 -            from physical address, needed fro managing correspondence.
130561 -             ..
130562 -       11.  Accounts maintained with organizations needed for effective
130563 -            communication.
130565 -             ..
130566 -       12.  SDS letterhead different from mailing address, and also
130567 -            different fro letterhead address.
130569 -             ..
130570 -       13.  Structure of an organization (i.e., company or government
130571 -            agency) for addressing correspondence, and entering names
130572 -            of individuals who work for an organization into the
130573 -            Contact field of SDS records.
130575 -             ..
130576 -       14.  Address correspondence requires details about individuals
130577 -            in an organization contact record.
130578 -
130579 -            a.  Surname
130580 -            b.  Complementary and professional title, e.g., MD, Ph.D.
130581 -            c.  Title of Organization Assignment, e.g., CEO
130582 -            d.  Salutation greeting format, e.g., Dear Joe  or Mr. X
130583 -            e.  Signature block
130584 -            f.  Email address
130585 -            g.  Location Mail Stop
130586 -            h.  Other fields created as needed
130588 -             ..
130589 -       15.  Fields for narrative descriptions to explain context and
130590 -            clarifications of data fields.  Flexibility to write as
130591 -            much or as little as needed.
130593 -             ..
130594 -       16.  Summary of all contacts listed once based on the numerical
130595 -            record number assigned in the order that records are
130596 -            created.
130598 -             ..
130599 -       17.  Alphabetical listings for organizations, alternate names of
130600 -            organization, including abreviations, and individual
130601 -            contact names who work at the organization, with user
130602 -            control over whose name appears in the alphabetical list.
130604 -             ..
130605 -            This form of listing facilitates timely, multiple selection
130606 -            of multiple people at an organization who may be involved
130607 -            in an event, rather than having to look up each one
130608 -            individually available in the next feature.
130610 -             ..
130611 -       18.  Alphabetical listings of individual contact names
130612 -            associated with the organization, so that people can be
130613 -            found individually, or by organization.
130614 -
130615 -
130616 -
130617 -
130618 -
130619 -
1307 -

SUBJECTS
Scope Individuals Contacts System Explanation Fields Application to

1403 -
140401 -  ..
140402 - Individuals Contacts Manages Details Identification People
140403 -
140404 -
140406 -        ..
140407 -    b. Individuals identification
140408 -
140409 -       These have similar fields for organizations.
140411 -        ..
140412 -       Verified new code for organization contacts works for individual
140413 -       contacts.
140414 -
140415 -
140416 -
140417 -
140418 -
140419 -
140420 -
1405 -

SUBJECTS
Contacts Line Counter Macro 201 Records Failing with Highlight Flag
Contacts Wicked Problems Complex Line Counter Macro 201 Records Fail

1804 -
1805 - Problem
180601 -  ..
180602 - Wicked Problems Solved Writing Things Down Linking Things Up
180603 - Counter Fails on Highlighted Individual Contact Name Line
180604 -
180605 - Follow up ref SDS 10 0000.
180606 -
180607 - After getting the new design to run correctly consistently, there is a
180608 - problem with macro 201.  The code fails by constructing positions for
180609 - line number level 3 when there is a highlight flag entered, i.e., it
180610 - is ignoring the highlight flag and writing over the character to fill
180611 - in level 3.  Solution was eventually found to be very simple,
180612 - ref SDS 0 Y44J, but understanding the problem was difficult,
180613 - illustrating some of the issues Gary raised in a letter received
180614 - yesterday on 041106. ref SDS 10 GY4H
180615 -
180616 -     [On 050130 case study yields lessons learned working with Dell to
180617 -     solve "wicked problem." ref SDS 13 344G
180619 -  ..
180620 - Investigation shows that...
180622 -         ..
180623 -    1.  If highlight is not added to a line where there is a contact
180624 -        person's name entered, then the problem does not occur.
180626 -         ..
180627 -    2.  The problem does not occur when F2 is used the first time after
180628 -        a Contact record is opened.  Failure begins with the 2nd use of
180629 -        F2, suggesting that counters used by 0705051 cause macro 201 to
180630 -        fail.
180632 -         ..
180633 -    3.  Macro 152 calls macro 163 in 000008 for profile level 4
180634 -        assigned to Contacts. ref OF 6 K55M
180636 -         ..
180637 -    4.  Macro 163 in 000009 assigns F2 to call macro 1803 to save a
180638 -        Contact record. ref OF 7 TY3F
180640 -         ..
180641 -    5.  Macro 1803 in 000009 calls macro 201 to initially maintain the
180642 -        line numbers so that content fields defined by line number
180643 -        structure are correct for subsequent processing. ref OF 7 166K
180645 -         ..
180646 -        Macro 1803 performs a number of system diagnostic tasks, e.g.,
180647 -        post current user name to show last person who saved the
180648 -        record, which involved various counters.  Since these other
180649 -        tasks have been performed all along, without impact to macro
180650 -        201 that updated line numbers, the operations in these tasks
180651 -        that impact counters cannot be material to the current problem.
180653 -         ..
180654 -        Macro 1803 calls macro file 0705051 to save the Contact record
180655 -        after running macro 201. ref OF 7 MV5J
180657 -         ..
180658 -    6.  Macro 201 in 000000 calls macro 202 to implement line counter
180659 -        ops. ref OF 5 898M
180661 -         ..
180662 -    7.  Macro 202 in 000000 uses counters 71+ for constructing the
180663 -        values for line counters. ref OF 5 VQ4I
180665 -         ..
180666 -    8.  Macro 201 calls code in macro 0 to process line number level
180667 -        lv-3. ref OF 5 GX4J  It is believed that level 3 is where the
180668 -        error may be occurring.
180670 -         ..
180671 -    9.  -label lv-3 in 000000 calls macro 204 in 000000 to process
180672 -        highlight flags. ref OF 5 XV4O
180674 -  ..
180675 - This turned out to be the cause of the error, per below, but was not
180676 - evident on first inspection. ref SDS 0 C467
180678 -         ..
180679 -   10.  Macro 204 calls -if @47 = 4 -goto m304g for processing the
180680 -        Contact record line number field. ref OF 5 OO5G
180682 -         ..
180683 -   11.  -label m304g calls macro 304 in 000000, then exits. ref OF 5
180684 -        K75G
180686 -         ..
180687 -   12.  Macro 304 merely sets colors and exits; the color for the flag
180688 -        that is prominently failing today is for the h flag, which is
180689 -        not remarkable in any evident way. ref OF 5 H44G
180691 -         ..
180692 -   13.  -label lv-3 when ops end from macro 304, the code calls -goto
180693 -        num_Bc, also, in 000000. ref OF 5 I85M
180694 -
180695 -        -label num_Bc generates the num string from column 1, and
180696 -        calls a conditional....
180697 -
180698 -                     -if @24 = 3 -if @19 = 4433 -if @72 > 51 -exit
180699 -
180700 -        ...which could be causing the problem, ref OF 5 4Y7G,
180702 -         ..
180703 -        However, resetting these counters did not solve the problem.
180704 -
180706 -  ..
180707 - Seem to have it solved by resetting counters 1 - 24 to 0, but not sure
180708 - which one controls the solution. ref OF 4 YG5H
180710 -  ..
180711 - Isolated the problem to counter 5 by running consecutive tests on half
180712 - of the number group.  Took about 5 tests, where the macro is
180713 - compressed and run on a test record, in this case using the Intel
180714 - record for Morris.
180716 -  ..
180717 - Verified that counter 5 was the problem by adding the command....
180718 -
180719 -        setcnt 5 0
180720 -
180721 - ...at the end of macro file 0705051. ref OF 4 X35K  This solved the
180722 - problem, and when setcnt 5 0 is disconnected, the problem occurs
180723 - again.  Where then does counter 5 occur in macro 201 that maintains
180724 - line numbers for the Contacts System.
180726 -  ..
180727 - Did a search using....
180728 -
180729 -              l /-if @5 /
180730 -
180731 - ....since if counter 5 is meaningful this typically occurs in a
180732 - conditional that controls something.
180734 -  ..
180735 - Found...
180737 -  ..
180738 - Line 1000, ref OF 5 GX4J, -label aMlV_2 in 000000
180739 -
180740 -    -label aMlV_2
180741 -    rel_cur 0 2
180742 -    chrcnt 3 0
180743 -    -if @3 = 32 -goto mcLP
180744 -    -if @3 > 101 -if @3 < 107 -goto kolRit
180745 -    -goto lv_3
180746 -
180747 -        This command previously read....
180748 -
180749 -             -if @3 > 101 -if @5 < 107 -goto kolRit
180750 -
180751 -        ...which seems to be an error, because the code should test for
180752 -        characters that qualify for system flags, which occur between e
180753 -        and k.
180755 -         ..
180756 -        This part of the code was examined earlier, and considered it
180757 -        could be part of the problem, because it is part of highlight
180758 -        management, per above. ref SDS 0 038O
180760 -         ..
180761 -        However, on initial examination, the error substituting @5 for
180762 -        @3 was not recognized.
180763 -
180764 -
180765 -
180766 -
180767 -
180768 -
180769 -
180770 -
1808 -

SUBJECTS
0705051 Develop Loop to Create Multiple Listings for a Contact

1903 -
1904 - Progress
190501 -  ..
190502 - 0705051  Develop loop to create multiple listings for a Contact
190503 -
190504 - Follow up ref SDS 4 BX6K, ref SDS 2 XT7A.
190505 -
190506 - The most detailed work on F2 calling 0705051 is in the record on
190507 - 980601. ref SDS 1 5376
190509 -  ..
190510 - Line 70, ref OF 4 WI8F, in 0705051, about 50 lines below top of file
190511 -
190512 -    top
190513 -    of 89
190514 -    macro 20
190515 -    setcnt 86 1
190516 -    macro 1182
190517 -    loc_cur 0 1
190518 -    split
190519 -    of 0
190520 -    loc_cur 4 1
190521 -    immed d
190522 -    e c:\sd\03\0705051
190523 -    line
190524 -    loc_cur 4 5
190525 -    split
190526 -    setcnt 86 1
190527 -    macro 1181
190528 -    rel_cur 1 0
190529 -    immed d
190530 -    ecur 33
190531 -
190532 -        Added code to capture from line 1 col 90 prior alphabetical
190533 -        listings and post them into 0705051 for removing the current
190534 -        record from the files for the alphabetical listings, so that
190535 -        when they are restored later in the process, they will replace
190536 -        the prior entry.
190537 -
190538 -
190539 -
190540 -
190541 -
190543 -  ..
190544 - Line 100, ref OF 4 SY4O, -label indvLN in 0705051
190545 -
190546 -
190547 -
190549 -  ..
190550 - Remove Prior Names from Alphabetical Contact Files
190551 -
190552 - Line 110, ref OF 4 6R6K, in 0705051 about 100 lines below
190553 -
190554 -    ecur 33
190555 -    macro 1814
190556 -    setgbl 9 0
190557 -    e c:\sd\03\0705051
190558 -    loc_cur 5 60
190559 -    macro 1181
190560 -    loc_cur 0 30
190561 -    getgbl 128 128
190562 -    -if @128 = 2 ic 51
190563 -    -if @128 = 4 ic 50
190564 -    loc_cur 12 59
190565 -    macro 1181
190566 -    loc_cur 6 26
190567 -    -if @128 = 2 ic 51
190568 -    -if @128 = 4 ic 50
190569 -
190570 -         ecur 33 returns to Contact record, macro 1814 reads the record
190571 -         ID using macro 1182, setglb 9 0 ensures the string is only 8
190572 -         characters.  e c:\sd\03\0705051 opens the save command macro
190573 -         file to post the record ID in dose commands  loc_cur 5 60
190574 -         positions to post record ID to dose command that removes names
190575 -         from alphabetical files.  loc_cur 0 30 positions to enter the
190576 -         record type for either individual or organization.  loc_cur 12
190577 -         59 positions to enter record ID to dose command that removes
190578 -         content for the current record from the User file for
190579 -         repetitive dates.  loc_cur 6 26 positions to enter record
190580 -         type to the command that copies the new processed file to the
190581 -         actual alphabetical file.
190582 -
190584 -  ..
190585 - Line 160, ref OF 4 K17I, -label lpacfn in 0705051
190586 -
190587 -    loc_cur 4 4
190588 -    -label lpacfn
190589 -    rel_cur 0 1
190590 -    chrcnt 1 0
190591 -    -if @1 = 32 -goto alcnp
190592 -    subcnt 1 64
190593 -    loc_cur 5 38
190594 -    -if @1 < 10 ic 48
190595 -    inscnt 1 0
190596 -    loc_cur 6 34
190597 -    -if @1 < 10 ic 48
190598 -    inscnt 1 0
190599 -    -gosub dlclfs
190600 -    -goto lpacfn
190601 -    -label alcnp
190602 -
190603 -        This is a new loop to remove entries from all alphabetical
190604 -        files for all the names in the Contact record by processing the
190605 -        string of letters entered by the code above, ref SDS 0 SZ4J,
190606 -        Each char is read, and when a blank space is encountered the op
190607 -        is over. Subroutine -gosub lpacfn calls dose commands that
190608 -        remove entries from alphabetical files, and copies the new file
190609 -        back to the alphabetical filename, so it is ready to add the
190610 -        actual content of the record.
190611 -
190613 -  ..
190614 - Line 120, ref OF 4 5950, -label orgzO
190615 -
190616 -
190618 -  ..
190619 - Line 180, ref OF 4 TU9H, -label orgzO in 0705051
190620 -
190621 -    rel_cur 1 0
190622 -    immed 99d
190623 -    save tjff
190624 -
190625 -        Added save tjff to easily get the orgz name.  This may turn
190626 -        out to be unnecessary.
190627 -
190628 -
190629 -
190631 -  ..
190632 - Line 340, ref OF 4 5623, -label lpa in 0705051
190633 -
190634 -    -label lpa
190635 -    z 9 9
190636 -    l /*/
190637 -    -if @0 > 0 -goto jm1
190638 -
190639 -        Code is doing a loop placing all contact names in file tjf for
190640 -        processing the organiztion contact.
190642 -         ..
190643 -        At this point, if all contact names identified with a * have
190644 -        been posted, then file tjf can be used to create process each
190645 -        individual person's name in the organization contact list.
190646 -
190647 -
190649 -  ..
190650 - Summaries Update Alphabetical Lists
190651 -
190652 - Line 720, ref OF 4 2284, -label dKaAaz in 0705051
190653 -
190654 -    -label dKaAaz
190655 -    e tjf
190656 -    bot
190657 -    loc_cur 0 47
190658 -    chrcnt 1 0
190659 -    linecnt 57 0
190660 -    -if @57 > 1 -if @1 = 32 immed d
190661 -
190662 -
190664 -  ..
190665 - Repetitive Dates Update
190666 -
190667 - Line 790, ref OF 4 558M, -label again in 0705051
190668 -
190669 -    -label again
190670 -    l /#/
190671 -    -if @0 > 0 -goto ecit
190672 -    addcnt 50 1
190673 -
190674 -        This is where processing of repetitive dates occurs and ends.
190675 -
190676 -
190677 -
190678 -
190680 -  ..
190681 - Line 850, ref OF 4 V44N, -label jmpv3 in 0705051
190682 -
190683 -    -label jmpv3
190684 -    e c:\sd\03\0705051
190685 -    getgbl 128 128
190686 -    line 420.....................&& doSe/
190687 -
190688 -        Want to change this to the new format; requires changing a lot
190689 -        of loc_cur calls.
190691 -         ..
190692 -        Should make this a batch file.
190693 -
190694 -
190696 -  ..
190697 - Remove Prior Entries All Alphabetical Lists for This Record
190698 -
190699 - Line 1100, ref OF 4 LP6J, -label dlclfs in 0705051
190700 -
190701 -    -label dlclfs
190702 -    dose/cs i 256 cr;m h:\sd\09\0t\00000\nn;o tj;ex fi 81 88 ="nnnnnnnn";k 1 1;g>nul
190703 -    dose/c copy tj h:\sd\09\0t\00000\nn >nul
190704 -    -return
190705 -
190706 -        This is a subroutine that deletes existing entries in an
190707 -        alphabetical listing.
190708 -
190709 -
190711 -  ..
190712 - Line 1120, ref OF 4 4055, -label nxtLx in 0705051
190713 -
190714 -    -label nxtLx
190715 -    up
190716 -    loc_cur 0 4
190717 -    chrcnt 1 0
190718 -    -if @1 = 49 -if @128 = 2 -goto ovrN
190719 -    loc_cur 0 10
190720 -
190721 -        Code is processing alternate organization name listings, and
190722 -        so is scrolling up until it reaches a 1 in col 4 that says the
190723 -        next field has been reached.
190724 -
190725 -
190727 -  ..
190728 - Alphabetical List Individual Contact Names for Organizations
190729 - Individual Contact Names Process for Organizational Alphabetical List
190730 -
190731 - Line 1150, ref OF 4 K16G, -label nxtLx in 0705051 about 50 lines
190732 - below
190733 -
190734 -    setcnt 114 1
190735 -    e tjf
190736 -    secnt 114 1
190737 -    macro 3
190738 -    g tjff 1 1
190739 -    top
190740 -
190741 -        Adding new code to process each contact name for looking up in
190742 -        the alphabetical list.
190743 -
190745 -  ..
190746 - Line 1290, ref OF 4 SW4M, -label nxtLx in 0705051 about 90 lines
190747 - below
190748 -
190749 -    top
190750 -    loc_cur 0 2
190751 -    setcnt 86 1
190752 -    setcnt 87 0
190753 -    setcnt 80 1000
190754 -    setcnt 81 25
190755 -    macro 1182
190756 -    loc_cur 0 1
190757 -    ins_text /
190758 -    loc_cur 0 47
190759 -    macro 1181
190760 -    ecur 33
190761 -    loc_cur 3 1
190762 -    z 4 4
190763 -    l / /
190764 -    l /1/
190765 -    down
190766 -
190767 -        This code finds the top of the record where individual contact
190768 -        names are entered.
190769 -
190771 -  ..
190772 - Line 1310, ref OF 4 116I, -label ecnal in 0705051
190773 -
190774 -    -label ecnal
190775 -    z 6 6
190776 -    errorcnt 0 0
190777 -    -label 2cnL
190778 -    l / /
190779 -    -if @0 = 0 -goto pcntl
190780 -    top
190781 -    setcnt 0 0
190782 -    -goto ovrN
190783 -
190784 -        Loop starts here to process all individual contact names in
190785 -        the record.  Looks for a blank in col 6 as a method to find
190786 -        these field levels.
190787 -
190788 -
190790 -  ..
190791 - Line 1350, ref OF 4 UL6F, -label pcntl in 0705051 about 40 lines
190792 - below
190793 -
190794 -    z 14 34
190795 -    setcnt 0 0
190796 -    fr /FirstNa/
190797 -    -if @0 > 0 -goto nfnf
190798 -    loc_cur 3 1
190799 -    -goto 2cnL
190800 -
190801 -        Verify the field name is not there, and if so, cycle back to
190802 -        top of loop and look for another name field.
190803 -
190804 -
190806 -  ..
190807 - Delete Prior Individuals from Organizational Alphabetical Listing
190808 -
190809 - This new design and support for entering individual names in the
190810 - alphabetical list of organizations requires maintaining the lists.
190812 -         ..
190813 -        How does the system know to maintain a list when the user
190814 -        deletes lines in the file.
190815 -
190816 -        a.  When a record is opened for editing, create an inventory in
190817 -            each record listing the letters that require maintenance
190818 -            if the record is saved.
190820 -             ..
190821 -            Actually, I am inclined to feel this can be done just as
190822 -            well by using 0705051 save op to maintain the list.  In
190823 -            order for anything to be deleted, it must be first be
190824 -            saved, so when F2 is called it can capture the current
190825 -            inventory to maintain the alphabetical lists, and then it
190826 -            can update the list to reflect any editing during the
190827 -            session.
190829 -             ..
190830 -        b.  Use the 0002 line because it is always available; begin on
190831 -            column 32.
190833 -             ..
190834 -            Decided instead to use 00 line col 90, which is off page.
190836 -             ..
190837 -        c.  Convert the letters to the appropriate file number
190838 -            correlated to each letter, so that 0705051 can immedicatly
190839 -            maintain the list.
190841 -             ..
190842 -        d.  When the record is saved, capture the string of contact
190843 -            letter files from the 00 line into the 0705051 macro file,
190844 -            and enter this in 0705051 macro file above the code that
190845 -            removes entries from the alphabetical letter files.
190847 -             ..
190848 -            Use the string transferred into 0705051 from the record on
190849 -            line 00 to delete all entries for the record in the files
190850 -            identified by the list.
190852 -             ..
190853 -            Process all alphabetical lists, and post the letter values
190854 -            to the 00 line on col 90 for the next time a record is
190855 -            saved.
190856 -
190857 -
190859 -  ..
190860 - Line 490, ref OF 2 9X4G, -label xx7 in 0470410 about 50 lines below
190861 -
190862 -    pf2 macro 1808
190863 -
190864 -        This is where F2 opens Contacts records.  Considered modifying
190865 -        the code for F2 to inventory the contact files to be updated
190866 -        when a record is saved, but decided against this. ref SDS 0
190867 -        LH6M
190869 -         ..
190870 -        Decided to add capability that when a Contact record is opened
190871 -        with F2, the record is positioned with the name of the person
190872 -        in the list is moved to the visible portion of the screen.
190873 -        This saves time for example switching letterheads.
190874 -
190875 -
190877 -  ..
190878 - Line 80, ref OF 7 2783, -entry 1808 in 0000009
190879 -
190880 -    -entry 1808
190881 -    -gosub aMld_Rcd
190882 -
190883 -        F2 runs macro 1808 in 000009 based on assignment in the Contact
190884 -        Summary file profile 047041 to open a Contact record.  Per
190885 -        above, decided against using this code. ref SDS 0 9X3L
190887 -         ..
190888 -        To get macro 1808 to find a contact person's name, add code to
190889 -        run the routine under -label jmPPit, per below. ref SDS 0 OY6H
190890 -        We need this code to capture the contact person's ID line
190891 -        number, see below, ref SDS 0 OY5M, and it needs to setgbl 157
190892 -        777  This is accomplished under -label aMSet2p in 000009 see
190893 -        below. ref SDS 0 OY4K
190894 -
190896 -  ..
190897 - Line 840, ref OF 7 3521, -label aMSet2p in 000009 about 20 lines
190898 - below
190899 -
190900 -    -label aMSet2p............................ ref SDS 0 W88M
190901 -    -if @47 = 41 setgbl 157 777
190902 -
190903 -        Added code to setgbl 157 777 when op starts in Contact Summary
190904 -        file, per above. ref SDS 0 Z69O
190905 -
190907 -  ..
190908 - Line 910, ref OF 7 MH5J, -label aMSet2p in 000009 about 150 lines
190909 - below
190910 -
190911 -    -label aMSet2p............................ ref SDS 0 W88M
190912 -
190913 -        of 80
190914 -        loc_cur 0 1
190915 -        setcnt 86 1
190916 -        macro 1182
190917 -        rel_cur 0 5
190918 -        setcnt 86 10
190919 -        macro 1182
190920 -
190921 -            This is the code that reads record ID to open a contact
190922 -            record.  Acced code to capture line number for the contact
190923 -            person, per planning above. ref SDS 0 Z69O
190924 -
190925 -
190927 -  ..
190928 - Line 3880, ref OF 7 6587, -label aMld_Rcd in 000009
190929 -
190930 -    -label aMld_Rcd
190931 -    setgbl 151 21
190932 -    setcnt 151 21
190933 -    -gosub aMSet2p.......................... ref SDS 0 OY4K
190934 -    -goto aMSumY
190935 -
190936 -        This is a flag that identifies when a contact record is opened
190937 -        from a Summary file.
190938 -
190940 -  ..
190941 - Line 4300, ref OF 7 0892, -label aMSDSt in 000009
190942 -
190943 -    -label aMSDSt
190944 -
190945 -        This is where the code from macro 1303 winds up to open a
190946 -        contact record listed in an SDS record, and find a particular
190947 -        person's name, per above. ref SDS 0 W88M
190948 -
190949 -
190951 -  ..
190952 - Line 3980, ref OF 7 RZ9L, -label jmPPit in 000009
190953 -
190954 -    -label jmPPit
190955 -    setcnt 0 0
190956 -    getgbl 1 157
190957 -    setgbl 157 0
190958 -    getgbl 10 10
190959 -    -if @10 < 33 setcnt 1 0
190960 -    -if @1 != 777 -goto nofSdS
190961 -    macro 52
190962 -    ic 108
190963 -    ic 47
190964 -    setcnt 86 10
190965 -    macro 1181
190966 -    ic 47
190967 -    ecur 33
190968 -    z 1 4
190969 -    @0w7j
190970 -    down 10
190971 -    loc_cur 13 10
190972 -
190973 -        This is the actual code that jumps a Contact record to a
190974 -        specified person's name ID line.  Looks like if macro 1808 has
190975 -        setgbl 157 777 the code will do the trick. ref SDS 0 9X5O
190976 -        Added code getgbl 10 10 and -if @10 < 33 setcnt 1 0 which
190977 -        together verify that a line number is entered for a contact
190978 -        person, and if not, the code will not attempt to look for a
190979 -        person, but will simply open the record.
190981 -         ..
190982 -        We could create an option, like Alt F2, to open a record at
190983 -        the top, rather than at a Contact person's name.
190984 -
190986 -  ..
190987 - Line 4370, ref OF 7 6261, -label aMdzQ in 000009
190988 -
190989 -    -label aMdzQ
190990 -
190991 -        of 170
190992 -        loc_cur 0 1
190993 -        chrcnt 1 0
190994 -        rel_cur 0 2
190995 -        -if @1 = 73 setgbl 128 2
190996 -        -if @1 = 79 setgbl 128 4
190997 -        -if @1 = 79 setgbl 157 777
190998 -        -goto aMmfy
190999 -
191000 -            The code is in an SDS record and getting ready to read the
191001 -            contact ID from col 170.  Initially determines the contact
191002 -            record type.  The work today involves only organization
191003 -            contact records.
191004 -
191006 -  ..
191007 - Line 900, ref OF 6 2638, -label oCon in 000008
191008 -
191009 -    -label oCon
191010 -    setcnt 1 3000
191011 -    macro 1302
191012 -    -exit
191013 -
191014 -        There is no work here today.  This research shows macro 1303 is
191015 -        used to open a Contact record to an individual's name.  We can
191016 -        use the same code to position a record when the record is
191017 -        opened from a summary, per above. ref SDS 0 W88N
191018 -
191019 -
191021 -  ..
191022 - Line 4090, ref OF 7 8604, -label oPenit in 000009
191023 -
191024 -    -label oPenit
191025 -    e 0w9k
191026 -    macro 301
191027 -    ins_text/e H:\SD\09\0T\00\00\00\nn  /
191028 -    loc_cur 0 13
191029 -
191030 -        When F2 is called in a Contact Summary file it runs macro 1808
191031 -        which runs this code for opening a Contact record selected by
191032 -        the user. Per above, decided against using this code.
191033 -        ref SDS 0 9X3L
191034 -
191035 -
191036 -
191038 -  ..
191039 - Line 4180, ref OF 7 5L6J, -label modrec in 0000009
191040 -
191041 -    -label modrec
191042 -    setcnt 2 231
191043 -    loc_cur 4 10
191044 -    -label acsllp
191045 -
191046 -        This is where record diagnostics are modified, and so it is a
191047 -        good place to consider the new op of inventorying the record.
191048 -        We can create a flag to jump out of this when not not opening
191049 -        a record for editing.
191051 -         ..
191052 -        The new design added into 0705051 that saves a record, may no
191053 -        longer need the code that manages counter 231, per above.
191054 -        ref SDS 0 SZ4J  Therefore, may be able to eliminate code where
191055 -        counter 231 is applied by counter 172. ref SDS 0 LH8L
191056 -
191057 -
191059 -  ..
191060 - Line 4290, ref OF 7 -label GA4G, noEtnr in 000009
191061 -
191062 -    -label GA4G
191063 -    -if @151 != 20 save
191064 -    @c:\sd\03\0705052................ decided not to add this.
191065 -    -return
191066 -
191067 -        Added call to new macro file 0705052 to complement save
191068 -        function 0705051, and this maintains inventory for updating
191069 -        alphabetical files.  Finally decided against this method, per
191070 -        above, ref SDS 0 9X3L, and so wound up not created a new macro
191071 -        file 0705052.
191072 -
191073 -
191074 -
191076 -  ..
191077 - Report on Contacts PA9
191078 -
191079 - Line 30, ref OF 1 3010, in 044011
191080 -
191082 -  ..
191083 - Line 1100, ref OF 1 3B5G, -label cSumS in 044011
191084 -
191085 -    -label cSumS
191086 -    @Q1 #40
191087 -
191088 -        This is calling a routine in 06112.
191089 -
191090 -
191092 -  ..
191093 - Line 1970, ref OF 3 BG9F, -label lcOn in 061120
191094 -
191095 -    -if @128 = 2 -goto inDiV
191096 -    rel_cur 0 4
191097 -    setcnt 86 189
191098 -    macro 182
191099 -    -label inDiV
191100 -
191101 -        Added code to enter organization name from Summary, rather
191102 -        than from within the Contact record.
191104 -  ..
191105 - This code had to be modified to enter the contact search string
191106 - correctly for individual contacts with reversed order.
191108 -  ..
191109 - Supported conditions...
191110 -
191111 -    1.  Report from summary
191112 -
191113 -    2.  Report from contact record
191114 -
191115 -    3.  Report from SDS record
191117 -         ..
191118 -    4.  Add contacrt specification to a Subject Report
191119 -
191120 -
191121 -
191122 -
191123 -
191124 -
191125 -
191126 -
191127 -
191128 -
1912 -