PROCEDURE IND
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.IND
*
*
* Module Description : Build Index if needed
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
IF .NOT. File("DPSORT.NDX")
   @24,1 SAY SPACE(78)
   @24,1 SAY "Please wait, file is being Indexed"
   SELECT I
   USE DPSORT
   INDEX ON SORTNAM TO DPSORT
   @24,1 SAY SPACE(78)
ENDIF
USE DPSORT INDEX DPSORT
RETURN


PROCEDURE FMT
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.FMT
*
*
* Module Description : Screen Format file
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
@4,13 GET MA_SORTNAM PICTURE "!!!!!!!!" 
@4,48 GET MA_SORTNDX PICTURE "!!!!!!!!"
@4,70 GET MA_SORTFRM PICTURE "!!!!!!!!" 
@5,15 GET MA_SORTDES  
@8,2 GET MA_SORTCRI  
@13,30 GET MA_SORTF1 PICTURE "!!!!!!!" 
@13,46 GET MA_SORTO1 PICTURE "!" 
@14,30 GET MA_SORTF2 PICTURE "!!!!!!!" 
@14,46 GET MA_SORTO2 PICTURE "!" 
@15,30 GET MA_SORTF3 PICTURE "!!!!!!!" 
@15,46 GET MA_SORT03 PICTURE "!" 
@16,30 GET MA_SORTF4 PICTURE "!!!!!!!" 
@16,46 GET MA_SORT04 PICTURE "!" 
@17,30 GET MA_SORTF5 PICTURE "!!!!!!!" 
@17,46 GET MA_SORT05 PICTURE "!"
@18,30 GET MA_SORTF6 PICTURE "!!!!!!!" 
@18,46 GET MA_SORTO6 PICTURE "!" 
@19,30 GET MA_SORTF7 PICTURE "!!!!!!!" 
@19,46 GET MA_SORT07 PICTURE "!" 
@20,30 GET MA_SORTF8 PICTURE "!!!!!!!" 
@20,46 GET MA_SORT08 PICTURE "!" 
@21,30 GET MA_SORTF9 PICTURE "!!!!!!!" 
@21,46 GET MA_SORT09 PICTURE "!" 
@22,30 GET MA_SORTF10 PICTURE "!!!!!!!" 
@22,46 GET MA_SORT10 PICTURE "!"
RETURN



PROCEDURE PUB
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.PUB
*
*
* Module Description : Define Public Fields
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
PUBLIC MA_SORTNAM
PUBLIC MA_SORTNDX
PUBLIC MA_SORTFRM
PUBLIC MA_SORTDES
PUBLIC MA_SORTCRI
PUBLIC MA_SORTF1 
PUBLIC MA_SORTO1 
PUBLIC MA_SORTF2 
PUBLIC MA_SORTO2 
PUBLIC MA_SORTF3 
PUBLIC MA_SORT03
PUBLIC MA_SORTF4 
PUBLIC MA_SORT04 
PUBLIC MA_SORTF5 
PUBLIC MA_SORT05 
PUBLIC MA_SORTF6 
PUBLIC MA_SORTO6 
PUBLIC MA_SORTF7 
PUBLIC MA_SORT07 
PUBLIC MA_SORTF8 
PUBLIC MA_SORT08 
PUBLIC MA_SORTF9 
PUBLIC MA_SORT09 
PUBLIC MA_SORTF10
PUBLIC MA_SORT10
RETURN



PROCEDURE CAL
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.CAL
*
*
* Module Description : Calculate and display Calculated fields
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
RETURN



PROCEDURE INT
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.INT
*
*
* Module Description : Initialize memory fields from Init or empty
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
STORE SPACE(8) TO MA_SORTNAM
STORE "SORTWORK" TO MA_SORTNDX
STORE SPACE(8) TO MA_SORTFRM
STORE SPACE(63) TO MA_SORTDES
STORE .T. TO MA_SORTCRI
STORE SPACE(7) TO MA_SORTF1
STORE "A" TO MA_SORTO1
STORE SPACE(7) TO MA_SORTF2
STORE "A" TO MA_SORTO2
STORE SPACE(7) TO MA_SORTF3
STORE "A" TO MA_SORT03
STORE SPACE(7) TO MA_SORTF4
STORE "A" TO MA_SORT04
STORE SPACE(7) TO MA_SORTF5
STORE "A" TO MA_SORT05
STORE SPACE(7) TO MA_SORTF6
STORE "A" TO MA_SORTO6
STORE SPACE(7) TO MA_SORTF7
STORE "A" TO MA_SORT07
STORE SPACE(7) TO MA_SORTF8
STORE "A" TO MA_SORT08
STORE SPACE(7) TO MA_SORTF9
STORE "A" TO MA_SORT09
STORE SPACE(7) TO MA_SORTF10
STORE "A" TO MA_SORT10
RETURN



PROCEDURE STO
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria
*
*
* Module             : DPSORT.STO
*
*
* Module Description : Store file fields to memory variables
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
STORE DPSORT -> SORTNAM to MA_SORTNAM
STORE DPSORT -> SORTNDX to MA_SORTNDX
STORE DPSORT -> SORTFRM to MA_SORTFRM
STORE DPSORT -> SORTDES to MA_SORTDES
STORE DPSORT -> SORTCRI to MA_SORTCRI
STORE DPSORT -> SORTF1  to MA_SORTF1 
STORE DPSORT -> SORTO1  to MA_SORTO1 
STORE DPSORT -> SORTF2  to MA_SORTF2 
STORE DPSORT -> SORTO2  to MA_SORTO2
STORE DPSORT -> SORTF3  to MA_SORTF3 
STORE DPSORT -> SORT03  to MA_SORT03 
STORE DPSORT -> SORTF4  to MA_SORTF4 
STORE DPSORT -> SORT04  to MA_SORT04 
STORE DPSORT -> SORTF5  to MA_SORTF5 
STORE DPSORT -> SORT05  to MA_SORT05 
STORE DPSORT -> SORTF6  to MA_SORTF6 
STORE DPSORT -> SORTO6  to MA_SORTO6 
STORE DPSORT -> SORTF7  to MA_SORTF7 
STORE DPSORT -> SORT07  to MA_SORT07 
STORE DPSORT -> SORTF8  to MA_SORTF8 
STORE DPSORT -> SORT08  to MA_SORT08 
STORE DPSORT -> SORTF9  to MA_SORTF9 
STORE DPSORT -> SORT09  to MA_SORT09 
STORE DPSORT -> SORTF10 to MA_SORTF10
STORE DPSORT -> SORT10  to MA_SORT10
RETURN



PROCEDURE REP
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.REP
*
*
* Module Description : Replace file fields to memory variables
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc
*
********************************************************************************
REPLACE DPSORT -> SORTNAM WITH MA_SORTNAM
REPLACE DPSORT -> SORTNDX WITH MA_SORTNDX
REPLACE DPSORT -> SORTFRM WITH MA_SORTFRM
REPLACE DPSORT -> SORTDES WITH MA_SORTDES
REPLACE DPSORT -> SORTCRI WITH MA_SORTCRI
REPLACE DPSORT -> SORTF1  WITH MA_SORTF1 
REPLACE DPSORT -> SORTO1  WITH MA_SORTO1 
REPLACE DPSORT -> SORTF2  WITH MA_SORTF2 
REPLACE DPSORT -> SORTO2  WITH MA_SORTO2 
REPLACE DPSORT -> SORTF3  WITH MA_SORTF3 
REPLACE DPSORT -> SORT03  WITH MA_SORT03 
REPLACE DPSORT -> SORTF4  WITH MA_SORTF4 
REPLACE DPSORT -> SORT04  WITH MA_SORT04 
REPLACE DPSORT -> SORTF5  WITH MA_SORTF5 
REPLACE DPSORT -> SORT05  WITH MA_SORT05 
REPLACE DPSORT -> SORTF6  WITH MA_SORTF6 
REPLACE DPSORT -> SORTO6  WITH MA_SORTO6 
REPLACE DPSORT -> SORTF7  WITH MA_SORTF7 
REPLACE DPSORT -> SORT07  WITH MA_SORT07 
REPLACE DPSORT -> SORTF8  WITH MA_SORTF8
REPLACE DPSORT -> SORT08  WITH MA_SORT08 
REPLACE DPSORT -> SORTF9  WITH MA_SORTF9 
REPLACE DPSORT -> SORT09  WITH MA_SORT09 
REPLACE DPSORT -> SORTF10 WITH MA_SORTF10
REPLACE DPSORT -> SORT10  WITH MA_SORT10
RETURN



PROCEDURE REL
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.REL
*
*
* Module Description : Release Memory variables
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc
*
********************************************************************************
RELEASE MA_SORTNAM
RELEASE MA_SORTNDX
RELEASE MA_SORTFRM
RELEASE MA_SORTDES
RELEASE MA_SORTCRI
RELEASE MA_SORTF1 
RELEASE MA_SORTO1 
RELEASE MA_SORTF2 
RELEASE MA_SORTO2 
RELEASE MA_SORTF3 
RELEASE MA_SORT03 
RELEASE MA_SORTF4 
RELEASE MA_SORT04 
RELEASE MA_SORTF5 
RELEASE MA_SORT05 
RELEASE MA_SORTF6
RELEASE MA_SORTO6 
RELEASE MA_SORTF7 
RELEASE MA_SORT07 
RELEASE MA_SORTF8 
RELEASE MA_SORT08 
RELEASE MA_SORTF9 
RELEASE MA_SORT09 
RELEASE MA_SORTF10
RELEASE MA_SORT10
RETURN



PROCEDURE ADD
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.ADD
*
*
* Module Description : Add New Records to file
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
STORE .T. TO MH_Loop
STORE " " TO MH_Wait
CALL DPSORT
DO WHILE MH_Loop
   DO INT
   DO FMT
   @24,1 SAY SPACE(78)
   @24,1 SAY "Press Ctrl End without entering data to exit"
   READ
   IF MA_SORTNAM <> " "
       DO VAL
       @24,1 SAY SPACE(79)
       APPEND BLANK
       DO REP
       DO CAL
       @24,1 SAY "Press any key to continue"
       @24,30 GET MH_Wait
       READ
   ELSE
     STORE .F. TO MH_Loop
   ENDIF
ENDDO
RELEASE MH_Loop,MH_Wait
RETURN



PROCEDURE UPD
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.UPD
*
*
* Module Description : Search,Update,Edit,Find,Print,Examine file
*
*
* Written by         : A. Michael Hearn
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
STORE .T. TO MH_Loop
STORE "N" TO MH_Function
STORE "N" TO MH_Answer
STORE SPACE(70) TO MH_Filt
STORE "Next,Previous,Top,Bottom,Quit,Help,Delete,Edit,More " TO MH_Menu1
STORE "Find,Set filter,pRint,More                          " TO MH_Menu2
STORE MH_Menu1 TO MH_Menu
CALL DPSORT
DO WHILE MH_Loop
   DO STO
   DO DIS
   DO CAL
   @24,1 SAY MH_Menu
   @24,53 GET MH_Function
   IF LEN(TRIM(MH_Filt)) = 0
      @24,55 SAY "    "
   ELSE
      @24,55 SAY "FILT"
   ENDIF
   IF Deleted()
      @24,60 SAY "DEL"
   ELSE
      @24,60 SAY "   "
   ENDIF
   @24,65 SAY Ltrim(Str(RECNO()))+"/"+Ltrim(STR(RECCOUNT()))+"     "
   READ
   DO CASE
      CASE UPPER(MH_Function) = "N"
           IF .NOT. EOF() 
              Skip 1
              IF EOF()
                 Skip -1
              ENDIF
           ENDIF
           LOOP
      CASE UPPER(MH_Function) = "P"
           IF .NOT. BOF()
              SKIP -1
           ENDIF
           LOOP
      CASE UPPER(MH_Function) = "E"
           DO STO
           DO FMT
           READ
           DO VAL
           DO CAL
           DO REP
           LOOP
      CASE UPPER(MH_Function) = "T"
           GOTO TOP
           LOOP
      CASE UPPER(MH_Function) = "B"
           GOTO BOTTOM
           LOOP
      CASE UPPER(MH_Function) = "D"
           STORE "N" TO MH_Answer
           @24,1 SAY SPACE(78)
           IF  DELETED()
               @24,1 SAY "Recall this record?"
           ELSE
               @24,1 SAY "Delete this record?"
           ENDIF
           @24,22 GET MH_Answer
           READ
           IF UPPER(MH_Answer) = "Y"
              IF DELETED()
                 RECALL
              ELSE
                 DELETE
              ENDIF
           ENDIF
           LOOP
      CASE UPPER(MH_Function) = "S"
           STORE "N" TO MH_Answer
           STORE MH_Filt TO MH_FiltH
           @24,1 SAY SPACE(78)
           @24,1 SAY "FILTER: "
           @24,9 GET MH_Filt
           READ
           @24,1 SAY SPACE(78)
           IF MH_Filt <> MH_FiltH
              SET FILTER TO &MH_Filt
              GOTO TOP
              CLEAR
              CALL DPSORT
           ENDIF
           IF EOF()
              @24,1 SAY "Nothing matches filter! Press any key to continue"
              @24,50 GET MH_Answer
              READ
           ENDIF
           LOOP
      CASE UPPER(MH_Function) = "F"
           DO FND
           LOOP
      CASE UPPER(MH_Function) = "M"
           IF MH_Menu1 = MH_Menu
              STORE MH_Menu2 TO MH_Menu
           ELSE
              STORE MH_Menu1 TO MH_Menu
           ENDIF
           LOOP
      CASE UPPER(MH_Function) = "Q"
           STORE .F. TO MH_LOOP
           LOOP
      CASE UPPER(MH_Function) = "T"
           SET DEVICE TO PRINT
           DO DIS
           SET DEVICE TO SCREEN
           LOOP
      CASE UPPER(MH_Function)="H"
           DO HLP WITH 2
           CALL DPMMSORT
           LOOP
   ENDCASE
STORE "N" TO MH_Function
ENDDO
SET FILTER TO
RELEASE MH_Function,MH_Loop,MH_Answer
RETURN



PROCEDURE DIS
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.DIS
*
*
* Module Description : Display only Format file
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
@4,13 SAY MA_SORTNAM PICTURE "!!!!!!!!"
@4,48 SAY MA_SORTNDX PICTURE "!!!!!!!!"
@4,70 SAY MA_SORTFRM PICTURE "!!!!!!!!"
@5,15 SAY MA_SORTDES 
@8,2 SAY MA_SORTCRI 
@13,30 SAY MA_SORTF1 PICTURE "!!!!!!!"
@13,46 SAY MA_SORTO1 PICTURE "!"
@14,30 SAY MA_SORTF2 PICTURE "!!!!!!!"
@14,46 SAY MA_SORTO2 PICTURE "!"
@15,30 SAY MA_SORTF3 PICTURE "!!!!!!!"
@15,46 SAY MA_SORT03 PICTURE "!"
@16,30 SAY MA_SORTF4 PICTURE "!!!!!!!"
@16,46 SAY MA_SORT04 PICTURE "!"
@17,30 SAY MA_SORTF5 PICTURE "!!!!!!!"
@17,46 SAY MA_SORT05 PICTURE "!"
@18,30 SAY MA_SORTF6 PICTURE "!!!!!!!"
@18,46 SAY MA_SORTO6 PICTURE "!"
@19,30 SAY MA_SORTF7 PICTURE "!!!!!!!"
@19,46 SAY MA_SORT07 PICTURE "!"
@20,30 SAY MA_SORTF8 PICTURE "!!!!!!!"
@20,46 SAY MA_SORT08 PICTURE "!"
@21,30 SAY MA_SORTF9 PICTURE "!!!!!!!"
@21,46 SAY MA_SORT09 PICTURE "!"
@22,30 SAY MA_SORTF10 PICTURE "!!!!!!!"
@22,46 SAY MA_SORT10 PICTURE "!"
RETURN



PROCEDURE FND
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.FND
*
*
* Module Description : Find record by key function
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc
*
********************************************************************************
STORE " " TO MH_Find
STORE " " TO MH_Answer
STORE 0   TO MH_Rec
@4,13 GET MA_SORTNAM PICTURE "!!!!!!!!"
@4,48 SAY MA_SORTNDX PICTURE "!!!!!!!!"
@4,70 SAY MA_SORTFRM PICTURE "!!!!!!!!"
@5,15 SAY MA_SORTDES 
@8,2 SAY MA_SORTCRI
@13,30 SAY MA_SORTF1 PICTURE "!!!!!!!"
@13,46 SAY MA_SORTO1 PICTURE "!"
@14,30 SAY MA_SORTF2 PICTURE "!!!!!!!"
@14,46 SAY MA_SORTO2 PICTURE "!"
@15,30 SAY MA_SORTF3 PICTURE "!!!!!!!"
@15,46 SAY MA_SORT03 PICTURE "!"
@16,30 SAY MA_SORTF4 PICTURE "!!!!!!!"
@16,46 SAY MA_SORT04 PICTURE "!"
@17,30 SAY MA_SORTF5 PICTURE "!!!!!!!"
@17,46 SAY MA_SORT05 PICTURE "!"
@18,30 SAY MA_SORTF6 PICTURE "!!!!!!!"
@18,46 SAY MA_SORTO6 PICTURE "!"
@19,30 SAY MA_SORTF7 PICTURE "!!!!!!!"
@19,46 SAY MA_SORT07 PICTURE "!"
@20,30 SAY MA_SORTF8 PICTURE "!!!!!!!"
@20,46 SAY MA_SORT08 PICTURE "!"
@21,30 SAY MA_SORTF9 PICTURE "!!!!!!!"
@21,46 SAY MA_SORT09 PICTURE "!"
@22,30 SAY MA_SORTF10 PICTURE "!!!!!!!"
@22,46 SAY MA_SORT10 PICTURE "!"
@24,1 SAY SPACE(78)
@24,1 SAY "Enter data to search for in open fields"
READ
IF TRIM(MA_SORTNAM) # ""
   STORE MA_SORTNAM TO MH_Find
   STORE RECNO() TO MH_Rec
   FIND &MH_Find
   IF EOF()
      GOTO MH_Rec
      @24,1 SAY SPACE(78)
      @24,1 SAY "Record Not Found! Press any key to continue"
      @24,45 GET MH_Answer
      READ
   ENDIF
ENDIF
@24,60 GET MH_Answer
READ
RELEASE MH_Find,MH_Answer,MH_Rec
@24,1 SAY SPACE(78)
RETURN



PROCEDURE VAL
********************************************************************************
*
* System             : DPSORT  
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.VAL
*
*
* Module Description : Validate data module
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
DO WHILE .T.
   DO CASE
   CASE MA_SORTO1 = "A"
        EXIT
   CASE MA_SORTO1 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @13,46 GET MA_SORTO1 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORTO2 = "A"
        EXIT
   CASE MA_SORTO2 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @14,46 GET MA_SORTO2 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT03 = "A"
        EXIT
   CASE MA_SORT03 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @15,46 GET MA_SORT03 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT04 = "A"
        EXIT
   CASE MA_SORT04 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @16,46 GET MA_SORT04 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT05 = "A"
        EXIT
   CASE MA_SORT05 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @17,46 GET MA_SORT05 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORTO6 = "A"
        EXIT
   CASE MA_SORTO6 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @18,46 GET MA_SORTO6 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT07 = "A"
        EXIT
   CASE MA_SORT07 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @19,46 GET MA_SORT07 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT08 = "A"
        EXIT
   CASE MA_SORT08 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @20,46 GET MA_SORT08 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT09 = "A"
        EXIT
   CASE MA_SORT09 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @21,46 GET MA_SORT09 PICTURE "!" 
       READ
   ENDCASE
ENDDO
DO WHILE .T.
   DO CASE
   CASE MA_SORT10 = "A"
        EXIT
   CASE MA_SORT10 = "D"
        EXIT
   OTHERWISE
       @24,1 SAY SPACE(78)
       @24,1 SAY "Must be: A D "
       @22,46 GET MA_SORT10 PICTURE "!" 
       READ
   ENDCASE
ENDDO
RETURN



PROCEDURE HLP
********************************************************************************
*
* System             : DPSORT
*
*
* System Description : Sort/Select Criteria                                       
*
*
* Module             : DPSORT.ADD
*
*
* Module Description : Give general information
*
*
* Written by         : A. Michael Hearn                                  
*
*
* Copyright (c) 1987 by University Research, Inc                          
*
********************************************************************************
PARAMETERS What
DO CASE
CASE What = 1
     @0,0 SAY "Sorry, No help available"
CASE What = 2
     @0,0 SAY "Sorry, No help available"
OTHERWISE
     @0,0 SAY "LOGIC ERROR IN PROGRAM"
ENDCASE
RETURN
