!D E C U S - I N T E R O F F I C E   M E M O R A N D U M
!
!Date:       20-Dec-1990 08:30pm EST
!From:       Winston Tellis 
!            TELLIS 
!Dept:       SIG STEERING COMM.:
!Tel No:     203-254-4000
!
!TO:  Bart Z. Lederman                     ( LEDERMAN )
!
!
!Subject:    accent prob 3 of 3

! VEGASPROB_5 with screen management
CONTROL SECTION
  RELATE DI NAMES4 AS NAM FOR UPDATE
  RELATE DI DETAILS4 AS DET FOR UPDATE
  RELATE DS FUNDS AS FUN ON FCODE FOR INPUT
  RELATE SF FROM COMMAND AS REPORT 1

DECLARE SECTION
  SELECT_FLAG, I, 1
  MAXDON, I, 3
  GENSTR, C, 40
  FUNSTR, C, 70
  COMPARE, C, 40
  SAVE_COMPARE, C, 40
  RECS_FOUND, I, 3
  SCRLL_CMD, C, 1
  DETAIL_CMD, C, 1
  DONS_FOUND, I, 3
  DONS_AMOUNT, N, 8,2
  NAME, C, 30
  PROCESS_CMD, C, 10
  MW, I, MAX
  IW, I, MAX
  DW, I, MAX
  HW, I, MAX
  INDX, I, MAX

PROCESS SECTION
ROUTINE DISPLAY_NAME
  INCLUDE CONCAT_NAME FROM CS CODE_SEGS5 WITH &
  'SENIOR:NAM', 'LAST:NAM', 'FIRST:NAM', 'MI:NAM', 'TITLED:NAM'
!  PRINT NAME:D,TAB 40,'(',ID:NAM,')'
!  PRINT ADDR:NAM
!  PRINT @RTRIM CITY:NAM + ", " + STATE:NAM + "  " + @STR (ZIP:NAM, "DDDDD")
!  PRINT @CR, "Number of Donations: ", TOTDON:NAM @"7Z"
!  PRINT      "       Total Amount: ", TOTAMT:NAM @"7$.DD",@CR
  SCREEN PUT_CHARS MW:D, '('+@STR ID:NAM+')', 1, 1, @SCN_ERASE, @SCN_BOLD
  SCREEN PUT_CHARS MW:D, NAME:D, 2, 1, @SCN_ERASE, @SCN_BOLD
  SCREEN PUT_CHARS MW:D, ADDR:NAM, 3, 1, @SCN_ERASE, @SCN_NORMAL
  @RTRIM CITY:NAM + ", " + STATE:NAM + "  " + @STR(ZIP:NAM,"DDDDD") TO GENSTR:D
  SCREEN PUT_CHARS MW:D, GENSTR:D, 4, 1, @SCN_ERASE, @SCN_NORMAL
  IF:200 TOTDON:NAM > 0
    @STR(TOTDON:NAM,"2Z")+' donations totaling '+@STR(TOTAMT:NAM,"7$.DD") TO GENSTR:D
  ELSE:200; 'No Donations' TO GENSTR:D; CONTINUE:200
  SCREEN PUT_CHARS MW:D, GENSTR:D, 6, 1, @SCN_ERASE, @SCN_NORMAL


ROUTINE GET_FUND_INFO
  GET FROM FUN MATCH RECORD BY FCODE:DET HUSH

ROUTINE DISPLAY_FUNDS
  @SCN_CREATE_WINDOW (12, 70, @SCN_BORDER, @SCN_NORMAL) TO HW:D
  SCREEN LABEL_BORDER HW:D, 'CODE NUMBERS FOR FUNDS', @SCN_TOP, 0, @SCN_NORMAL
  SCREEN PASTE_WINDOW HW:D, 10, 4
!  PRINT TAB 10,'FUND',TAB 20,'FUND',TAB 40,'FUND'
!  PRINT TAB 10,'CODE',TAB 17,'ABBREVIATION',TAB 40,'NAME'
  0 TO INDX:D
  GET FROM FUN FIRST RECORD HUSH
  START:100
  LEAVE:100 UNLESS @AUX='YES'
!    PRINT TAB 10, FCODE:FUN,TAB 20,FABBR:FUN,TAB 30,FNAME:FUN
    INDX:D + 1 TO INDX:D
    @STR FCODE:FUN + '  ' + @RPAD (FABBR:FUN, 5) + '  ' + FNAME:FUN TO FUNSTR:D
    SCREEN PUT_CHARS HW:D, FUNSTR:D, INDX:D, 2, @SCN_NOERASE, @SCN_NORMAL
    GET FROM FUN NEXT RECORD HUSH
  REPEAT:100
  'Press any key to exit this screen' TO GENSTR:D
  SCREEN PUT_CHARS HW:D, GENSTR:D, 12, 2, @SCN_NOERASE, @SCN_REVERSE
  @SCN_READ_KEYSTROKE (HW:D, 30) TO @INTEGER !ten second time-out
  SCREEN UNPASTE_WINDOW HW:D

ROUTINE RECALC_DON
  0 TO DONS_FOUND:D;  0.0 TO DONS_AMOUNT:D
  GET FROM DET FIRST MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
  START:100    !loop thru and find all donations
  LEAVE:100 UNLESS @AUX='YES'
    DONS_AMOUNT:D + AMOUNT:DET TO DONS_AMOUNT:D; DONS_FOUND:D+1 TO DONS_FOUND:D
    GET FROM DET NEXT MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
  REPEAT:100

ROUTINE DISPLAY_DON
  0 TO DONS_FOUND:D
  SCREEN HOME_CURSOR DW:D, @SCN_UPPER_LEFT
  SCREEN ERASE_WINDOW DW:D, 0,0,0,0
  GET FROM DET FIRST MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
  START:100
  LEAVE:100 UNLESS @AUX='YES'
    PERFORM GET_FUND_INFO
!    PRINT DATED:DET,4S,AMOUNT:DET,4S,FCODE:DET,4S,FABBR:FUN,4S,FNAME:FUN
    DONS_FOUND:D + 1 TO DONS_FOUND:D
    @DATSTR DATED:DET + '  ' + @STR (AMOUNT:DET, "6$.DD") + '   ' + FABBR:FUN TO GENSTR:D
    SCREEN PUT_WITH_SCROLL DW:D, GENSTR:D, @SCN_UP, @SCN_NORMAL, @SCN_NOWRAP
  LEAVE:100  IF DONS_FOUND:D > MAXDON:D  !only certain number can fit on screen
    GET FROM DET NEXT MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
  REPEAT:100
!  IF:100 DONS_FOUND:D = 0; PRINT 15S,'No Donations'; CONTINUE:100

ROUTINE SCROLL_DONATIONS
!  TYPE '   Use these keys (F)orwards,(B)ackwards,(S)elect,(E)xit  '
  0 TO DONS_FOUND:D;  ' ' TO SCRLL_CMD:D    !init these vars
  SCREEN HOME_CURSOR DW:D, @SCN_UPPER_LEFT
  SCREEN ERASE_WINDOW DW:D, 0,0,0,0
  '(F)orwards,(B)ackwards,(S)elect,(E)xit' TO GENSTR:D
  SCREEN PUT_CHARS IW:D, GENSTR:D, 10, 1, @SCN_ERASE, @SCN_REVERSE
  GET FROM DET FIRST MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
  START:100   !loop to show and scroll
  LEAVE:100 UNLESS @AUX='YES'
    DONS_FOUND:D + 1 TO DONS_FOUND:D
    PERFORM GET_FUND_INFO
!    PRINT DATED:DET,4S,AMOUNT:DET,4S,FCODE:DET,4S,FABBR:FUN,4S,FNAME:FUN
!    ACCEPT SCRLL_CMD:D
    @DATSTR DATED:DET + '  ' + @STR (AMOUNT:DET, "6$.DD") + '   ' + FABBR:FUN TO GENSTR:D
    SCREEN PUT_CHARS DW:D, GENSTR:D, 12, 1, @SCN_ERASE, @SCN_NORMAL
    @SCN_READ_CHAR (IW:D, 10, 39, 1, @SCN_NORMAL) TO SCRLL_CMD:D
    SCREEN ERASE_LINE DW:D, 22, 1
  LEAVE:100 IF SCRLL_CMD:D = 'S','E'
    IF:110 SCRLL_CMD:D = 'B'   !if backwards use get prior
      GET FROM DET PRIOR MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
    ORIF:110 SCRLL_CMD:D = 'F'  !if forwards use get next
      GET FROM DET NEXT MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
    CONTINUE:110
    UNLESS:110 @AUX='YES'   !if no more matched records
!      PRINT '   No more records in that direction'
       'No more recs in that direction' TO GENSTR:D
        SCREEN PUT_CHARS DW:D, GENSTR:D, 22, 1, @SCN_ERASE, @SCN_BOLD + @SCN_BLINK
      IF:120 SCRLL_CMD:D = 'B'  !return to rec you just left
        GET FROM DET NEXT MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
      ORIF:120 SCRLL_CMD:D = 'F'
        GET FROM DET PRIOR MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
      CONTINUE:120
    CONTINUE:110
  REPEAT:100   !repeat until an exit or select
!  IF:100 DONS_FOUND:D = 0; PRINT '   No donations found';  CONTINUE:100

INITIAL SECTION
  20 TO MAXDON;  DISABLE SEQUENCE LOWER
  SCREEN KILL_SCREEN
  @SCN_CREATE_WINDOW ( 6, 40, @SCN_BORDER, @SCN_NORMAL) TO MW:D
  @SCN_CREATE_WINDOW (14, 40, @SCN_BORDER, @SCN_NORMAL) TO IW:D
  @SCN_CREATE_WINDOW (22, 35, @SCN_BORDER, @SCN_NORMAL) TO DW:D

  SCREEN PASTE_WINDOW MW:D, 2, 2
  SCREEN PASTE_WINDOW IW:D, 10, 2
  SCREEN PASTE_WINDOW DW:D, 2, 44

  SCREEN LABEL_BORDER MW:D, 'MASTER RECORDS', @SCN_TOP, 0, @SCN_NORMAL
!  SCREEN LABEL_BORDER IW:D, 'INFORMATION',    @SCN_TOP, 0, @SCN_NORMAL
  SCREEN LABEL_BORDER DW:D, 'DETAIL RECORDS', @SCN_TOP, 0, @SCN_NORMAL

HEADINGS SECTION
  TURN FILL OFF
!123456789*123456789*123456789*123456789  'ruler'

DETAILS SECTION
START:10
!  TYPE @CR,'   You may enter an ID number, last name, part of a last name,'
!  TYPE     '   or "SOUNDEX Last_name" for a soundex search of last names'
!  TYPE     '   that sound like the given last name (<CR> will exit).',@CR
!  TYPE     '   Enter Comparison:   ',NOCR
!  ACCEPT COMPARE:D;  COMPARE:D TO SAVE_COMPARE:D
  SCREEN HOME_CURSOR MW:D, @SCN_UPPER_LEFT
  SCREEN HOME_CURSOR DW:D, @SCN_UPPER_LEFT
  SCREEN HOME_CURSOR IW:D, @SCN_UPPER_LEFT
  SCREEN ERASE_WINDOW MW:D, 0,0,0,0
  SCREEN ERASE_WINDOW DW:D, 0,0,0,0
  SCREEN ERASE_WINDOW IW:D, 0,0,0,0
  SCREEN PUT_CHARS IW:D, 'Enter Comparison: ', 1, 1, @SCN_NOERASE, @SCN_NORMAL
  'Enter an ID number, a last name, part' TO GENSTR:D
  SCREEN PUT_CHARS IW:D, GENSTR:D, 3, 1, @SCN_NOERASE, @SCN_NORMAL
  'of a last name, or "SOUNDEX Last_name"' TO GENSTR:D
  SCREEN PUT_CHARS IW:D, GENSTR:D, 4, 1, @SCN_NOERASE, @SCN_NORMAL
  '(<CR> will exit)' TO GENSTR:D
  SCREEN PUT_CHARS IW:D, GENSTR:D, 5, 1, @SCN_NOERASE, @SCN_NORMAL
  @SCN_READ_CHAR (IW:D, 1, 20, 20, @SCN_BOLD) TO COMPARE:D
  SCREEN ERASE_WINDOW IW:D, 2, 1, 14, 40
  COMPARE:D TO SAVE_COMPARE:D

LEAVE:10 IF COMPARE:D = ' '

  START:20
    0 TO SELECT_FLAG:D; 0 TO RECS_FOUND:D; ' ' TO DETAIL_CMD:D   !init vars
    IF:30 COMPARE:D INTEGRAL  !if looking for an ID, can only find one or none
      GET FROM NAM MATCH RECORD BY @IVAL COMPARE:D USE DOMAIN ID HUSH
      IF:40 @AUX='YES'; 1 TO SELECT_FLAG:D; 1 TO RECS_FOUND:D; CONTINUE:40

    ORIF:30 COMPARE:D BEGINS WITH 'SOUNDEX'
      @LTRIM (@SPAN (COMPARE:D, " ")) TO COMPARE:D  !clip off the 'soundex'
      @SOUNDEX COMPARE:D TO COMPARE:D
      GET FROM NAM FIRST MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
      START:40   !loop thru all recs that match, find how many match
      LEAVE:40 UNLESS @AUX='YES'
        RECS_FOUND:D + 1 TO RECS_FOUND:D
        GET FROM NAM NEXT MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
      REPEAT:40  !note that really we just need to know we have more than one
      IF:40 RECS_FOUND:D = 1; 1 TO SELECT_FLAG:D; CONTINUE:40    
! return back to the first match record, if any
      GET FROM NAM FIRST MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
      IF:40 @AUX='YES' AND RECS_FOUND:D > 1
!        PRINT '   There are ',RECS_FOUND:D @"4D",' records that match'
         @STR RECS_FOUND:D + ' master records match' TO GENSTR:D
         SCREEN PUT_CHARS IW:D, GENSTR:D, 3, 1, @SCN_NOERASE, @SCN_NORMAL
        START:50   !now start the browse 
          PERFORM DISPLAY_NAME;  PERFORM DISPLAY_DON
!          TYPE '   (F)orwards,(B)ackwards,(S)elect,(E)xit:  ', NOCR
!          ACCEPT SCRLL_CMD:D
           '(F)orwards,(B)ackwards,(S)elect,(E)xit:' TO GENSTR:D
           START:60
           SCREEN PUT_CHARS IW:D, GENSTR:D, 10, 1, @SCN_ERASE, @SCN_REVERSE
           @SCN_READ_CHAR (IW:D, 10, 39, 1, @SCN_NORMAL) TO SCRLL_CMD:D
           SCREEN ERASE_LINE IW:D, 6, 1   !remove possible error message
        LEAVE:50 IF SCRLL_CMD:D = 'S','E'
          LEAVE:60 IF SCRLL_CMD:D = 'B','F'
          REPEAT:60
          IF:60 SCRLL_CMD:D = 'B'   !backwards is a get prior
            GET FROM NAM PRIOR MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
          ORIF:60 SCRLL_CMD:D = 'F' !forwards is a get next
            GET FROM NAM NEXT MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
          CONTINUE:60
          UNLESS:60 @AUX='YES'   !if no prior or next match record
!???        PRINT '   No more records in that direction match the comparator'
            'No more matched recs in that direction' TO GENSTR:D
            SCREEN PUT_CHARS IW:D, GENSTR:D, 6, 1, @SCN_ERASE, @SCN_BLINK + @SCN_BOLD
            IF:70 SCRLL_CMD:D BEGINS WITH 'B'  !return to the record you left
              GET FROM NAM NEXT MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
            ELSE:70   !backwards is get next, forwards get prior, reverse of above
              GET FROM NAM PRIOR MATCH RECORD BY COMPARE:D USE DOMAIN SOUNDEX HUSH
            CONTINUE:70
          CONTINUE:60
        REPEAT:50   !end of browse
        IF:50 SCRLL_CMD = 'S';  1 TO SELECT_FLAG:D;  CONTINUE:50
      CONTINUE:40

    ELSE:30     !must be a last name, or part of a last name
! The names ds has been sorted on last,first,mi,id.  Get first high fit will
! allow me to use full or partial last names to point me to the approximate
! area I need to be in, however I need to check after my get (note last begins
! with compare statement).  Once I find my first rec, I browse backwards,
! forwards with prior,next not indexed, using the inherent sort order of the ds.
      GET FROM NAM FIRST HIGH FIT RECORD BY COMPARE:D USE DOMAIN NAME HUSH
      START:40   !count to see how many fit criteria
      LEAVE:40 UNLESS @AUX='YES'   !leave loop if can't find one
! leave loop also if first high fit returns something not appropriate
      LEAVE:40 UNLESS LAST BEGINS WITH COMPARE:D
        RECS_FOUND:D + 1 TO RECS_FOUND:D
        GET FROM NAM NEXT RECORD NOT INDEXED HUSH !use inherent sort order
      REPEAT:40
      IF:40 RECS_FOUND:D = 1; 1 TO SELECT_FLAG:D; CONTINUE:40
! return back to the first record found, if any
      GET FROM NAM FIRST HIGH FIT RECORD BY COMPARE:D USE DOMAIN NAME HUSH
      IF:40 @AUX='YES' AND RECS_FOUND:D > 1   !start the browse phase, if needed
!        PRINT '   There are ',RECS_FOUND:D @"4D",' records that match'
         @STR (RECS_FOUND:D) + ' master records match' TO GENSTR:D
         SCREEN PUT_CHARS IW:D, GENSTR:D, 3, 1, @SCN_NOERASE, @SCN_NORMAL
        START:50   !begin browse
          PERFORM DISPLAY_NAME;  PERFORM DISPLAY_DON
!          TYPE '   (F)orwards,(B)ackwards,(S)elect,(E)xit:  ', NOCR
!          ACCEPT SCRLL_CMD:D
           '(F)orwards,(B)ackwards,(S)elect,(E)xit:' TO GENSTR:D
           START:60
           SCREEN PUT_CHARS IW:D, GENSTR:D, 10, 1, @SCN_NOERASE, @SCN_REVERSE
           @SCN_READ_CHAR (IW:D, 10, 39, 1, @SCN_NORMAL) TO SCRLL_CMD:D
           SCREEN ERASE_LINE IW:D, 6, 1   !remove possible error message
        LEAVE:50 IF SCRLL_CMD:D = 'S','E'
           LEAVE:60 IF SCRLL_CMD:D = 'B','F'
           REPEAT:60
          IF:60 SCRLL_CMD:D = 'B'  !if backwards,get prior; if forwards,get next
            GET FROM NAM PRIOR RECORD NOT INDEXED HUSH  !use inherent sort order
          ELSE:60; GET FROM NAM NEXT RECORD NOT INDEXED HUSH; CONTINUE:60
          UNLESS:60 @AUX='YES'   !if can't find any more records
!            PRINT '   No more records in that direction'
             'No more recs in that direction' TO GENSTR:D
             SCREEN PUT_CHARS IW:D, GENSTR:D, 6, 1, @SCN_ERASE, @SCN_BLINK + @SCN_BOLD
          ORUNLESS:60 LAST BEGINS WITH COMPARE:D  !or rec found not a match
!            PRINT '   No more records in that direction match the comparator'
             'No more matched recs in that direction' TO GENSTR:D
             SCREEN PUT_CHARS IW:D, GENSTR:D, 6, 1, @SCN_ERASE, @SCN_BLINK + @SCN_BOLD
            IF:70 SCRLL_CMD:D = 'B'    !get back to the record you left by
              GET FROM NAM NEXT RECORD NOT INDEXED HUSH  !reversing the gets
            ELSE:70; GET FROM NAM PRIOR RECORD NOT INDEXED HUSH; CONTINUE:70
          CONTINUE:60
        REPEAT:50   !exit browse loop
        IF:50 SCRLL_CMD:D = 'S';  1 TO SELECT_FLAG:D;  CONTINUE:50
      CONTINUE:40
    CONTINUE:30  !at this point selectflag=0,1 and recsfound>=0
    IF:30 RECS_FOUND:D=0; 'No master records found that match' TO GENSTR:D 
    SCREEN PUT_CHARS IW:D, GENSTR:D, 7, 1, @SCN_ERASE, @SCN_BOLD; CONTINUE:30
    IF:30 RECS_FOUND:D>0 AND SELECT_FLAG=0; 'No master records selected' TO GENSTR:D
    SCREEN PUT_CHARS IW:D, GENSTR:D, 7, 1, @SCN_ERASE, @SCN_BOLD; CONTINUE:30
    IF:30 RECS_FOUND:D>0 AND SELECT_FLAG=1   !redundant but true
      START:40  !we have recs and we have selected a rec for processing
        PERFORM DISPLAY_NAME;  PERFORM DISPLAY_DON
        SCREEN HOME_CURSOR IW:D, @SCN_UPPER_LEFT
        SCREEN ERASE_WINDOW IW:D, 0,0,0,0
        START:50  !;  TYPE @CR
!          TYPE '   (A)dd    a detail record'
!          TYPE '   (M)odify a detail record'
!          TYPE '   (D)elete a detail record'
!          TYPE '   (X)punge a master record and all associated detail recs'
!          TYPE '   (E)xit return to comparison input'
!          TYPE '   (B)rowse return to browse phase',5S,NOCR
!          ACCEPT DETAIL_CMD:D
          SCREEN PUT_CHARS IW:D, '(A)dd    a detail record', 2, 1, @SCN_ERASE, @SCN_NORMAL
          SCREEN PUT_CHARS IW:D, '(M)odify a detail record', 3, 1, @SCN_ERASE, @SCN_NORMAL
          SCREEN PUT_CHARS IW:D, '(D)elete a detail record', 4, 1, @SCN_ERASE, @SCN_NORMAL
          SCREEN PUT_CHARS IW:D, '(X)punge a master/detail record(s)', 5, 1, @SCN_ERASE, @SCN_NORMAL
          SCREEN PUT_CHARS IW:D, '(E)xit   return to comparison input', 6, 1, @SCN_ERASE, @SCN_NORMAL
          SCREEN PUT_CHARS IW:D, '(B)rowse return to browse phase', 7, 1, @SCN_ERASE, @SCN_NORMAL
          SCREEN CHANGE_RENDITION IW:D, 2, 2, 6, 1, @SCN_BOLD
          @SCN_READ_CHAR (IW:D, 7, 39, 1, @SCN_NORMAL) TO DETAIL_CMD:D          
          SCREEN CHANGE_RENDITION IW:D, 2, 2, 6, 1, @SCN_NORMAL
        SCREEN HOME_CURSOR IW:D, @SCN_UPPER_LEFT
        SCREEN ERASE_WINDOW IW:D, 0,0,0,0
      LEAVE:40 IF DETAIL_CMD:D = 'E'
        LEAVE:50 IF DETAIL_CMD:D = 'A','M','D','X','E','B'
        REPEAT:50   !loop until valid character

        IF:50 DETAIL_CMD:D = 'A'   !add a detail record
          READY DET AREA
            ID:NAM TO ID:DET:R
            'ADD' TO PROCESS_CMD:D
            INCLUDE PROCESS_DETAIL_REC FROM CS CODE_SEGS5 WITH 'PROCESS_CMD:D'
          CREATE DET

        ORIF:50 DETAIL_CMD:D = 'M'   !modify a detail record
          PERFORM SCROLL_DONATIONS   !must look for specific detail record
          IF:60 SCRLL_CMD:D = 'S'  !; PRINT '   You have selected for modify'
            SCREEN PUT_CHARS IW:D,'<CR> will select default',9,4,@SCN_ERASE,@SCN_BOLD
            'MODIFY' TO PROCESS_CMD:D
            INCLUDE PROCESS_DETAIL_REC FROM CS CODE_SEGS5 WITH 'PROCESS_CMD:D'
            SCREEN ERASE_LINE IW:D,9,4
            PUT RECORD IN DET

          ORIF:60 SCRLL_CMD:D = 'E'
!            PRINT '   You have exited without modifying';
!             SCREEN PUT_CHARS IW:D, 'No detail record modified', 
          CONTINUE:60
        ORIF:50 DETAIL_CMD:D = 'D'   !delete a detail record
          PERFORM SCROLL_DONATIONS   !must look for a specific detail record
          IF:60 SCRLL_CMD:D = 'S'   !; PRINT '   You have selected for delete'
            DELETE RECORD FROM DET HUSH
          ORIF:60 SCRLL_CMD:D = 'E'
!            PRINT '   You have exited without deleting';
          CONTINUE:60
        ORIF:50 DETAIL_CMD:D = 'X'   !expunge a master and all ass. details
!          TYPE '   The master record and all associated detail records',NOCR
!          TYPE ' will be deleted'
          GET FROM DET FIRST MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
          START:60   !loop to delete all the detail recs by specific ID
          LEAVE:60 UNLESS @AUX='YES'
            DELETE RECORD FROM DET HUSH
            GET FROM DET NEXT MATCH RECORD BY ID:NAM USE DOMAIN ID HUSH
          REPEAT:60
          SCREEN HOME_CURSOR DW:D, @SCN_UPPER_LEFT
          SCREEN ERASE_WINDOW DW:D, 0,0,0,0
          DELETE RECORD FROM NAM HUSH   !finish off by deleting master
          SCREEN HOME_CURSOR MW:D, @SCN_UPPER_LEFT
          SCREEN ERASE_WINDOW MW:D, 0,0,0,0
        CONTINUE:50
      LEAVE:40 IF DETAIL_CMD = 'X','B'  !if eXpunge, no record to return to

        IF:50 DETAIL_CMD # 'E'   !if we made a change to the detail records
          PERFORM RECALC_DON     !recalculate the necessary information
          DONS_FOUND:D TO TOTDON:NAM     !such as number of donations
          DONS_AMOUNT:D TO TOTAMT:NAM    !and total amount of donations
          PUT RECORD IN NAM      !and update the master name record
        CONTINUE:50
      REPEAT:40
    CONTINUE:30
    SAVE_COMPARE:D TO COMPARE:D   !return to the original start of the browse
! keep looping if we requested continued browse and we have stuff to browse to
  LEAVE:20 UNLESS DETAIL_CMD:D = 'X','B' AND RECS_FOUND:D > 1
  REPEAT:20
REPEAT:10   !looking for a comparitor
SCREEN KILL_SCREEN

