home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
database
/
workdb.zip
/
ADD.PRG
< prev
next >
Wrap
Text File
|
1988-08-15
|
20KB
|
532 lines
*!!* dBASE CONVERT - dBASE III File Conversion Aid v2.01 1/10/86
*
SET HEADING OFF
SET SAFETY OFF
* add.sig 08/18/83
*******************************************************************
* THIS MODULE ADDS RECORDS TO THE ORDERS (SIG/M) DATA BASE.
* IT IS WELL WORTH PRINTING OUT AND STUDYING BECAUSE IT CON-
* TAINS MANY PRACTICAL HINTS FOR WRITING A dBASE PROGRAM.
* COMMENTS ARE INSERTED AT APPROPRIATE POINTS IN THE FILE.
* COMMENTS ALREADY IN MAIN.SIG ARE NOT REPEATED.
******************************************************************
* WE WANT TO GET RID OF THE INDEX WHEN WE ADD. IF YOU
* HAVE A SMALL DATA BASE IT IS OK - BUT OTHERWISE YOU
* HAVE TO WAIT FOR EACH RECORD TO BE INDEXED. MOST COMMERCIAL
* PROGRAMS INDEX EVERY TIME AND IT COSTS YOU TIME. HERE WE
* GIVE YOU THE OPTION OF INDEXING OR NOT WHEN YOU EXIT. IF
* YOU DO NOT, THE RECORDS ARE THERE, BUT YOU WILL NOT FIND
* THEM EXCEPT BY THE STRING SEARCH IN SEARCH1.SIG (SINCE IT
* USES THE 'LOCATE FOR' COMMAND TO FIND NON INDEXED DATA.
* THE INDEX IS STILL ON - SO WE TAKE IT OFF
CLOSE INDEX
CLEAR
STORE .T. TO FIRST
STORE .T. TO MORE
* because we use three screens in this add - it makes for a neater
* screen if we get rid of the colons around the add field
SET DELIMITER OFF
DO WHILE MORE
IF FIRST
* get record number for automatic order number addition
GOTO BOTTOM
@ 2, 0 SAY "+---------------------------------------"
@ 2,39 SAY "---------------------------------------+"
@ 3, 5 SAY "ORDER NUMBER:"
@ 3,43 SAY "Complete:"
@ 4, 8 SAY "Last name:"
@ 4,46 SAY "First:"
@ 5,10 SAY "Address:"
@ 6, 9 SAY "(line 2):"
@ 7, 9 SAY "(line 3):"
@ 8,13 SAY "City:"
@ 8,46 SAY "State:"
@ 8,65 SAY "ZIP:"
@ 9,11 SAY "Amount:"
@ 9,46 SAY "Enter:"
@ 9,64 SAY "Ship:"
@ 11,00 SAY "Enter Individual Volumes Ordered (999 when done): "
@ 12, 2 SAY "Volumes:"
@ 14, 2 SAY "Remarks:"
@ 15, 2 SAY "Remarks:"
@ 16, 0 SAY "Backorder:"
@ 17,44 SAY "Catalog:"
@ 18, 2 SAY "Shipped:"
@ 18,26 SAY "Shipped:"
@ 18,62 SAY "Update:"
@ 19, 0 SAY "+---------------------------------------"
@ 19,39 SAY "---------------------------------------+"
ENDIF FIRST
STORE .F. TO FIRST
* IN SIG/M.CMD WE HAVE SAVED OUR VARIABLES AS A FILE ADD.MEM. WE NOW
* BRING THEM UP (NOTE - IN ADD.INV WHERE ARE VARIABLES ARE ESSENTIALLY
* NUMERIC WE DO NOT USE THIS METHOD. IF YOU RUN THE SAME PROGRAM ON
* BOTH CP/M 80 AND CP/M 86 FIRST DELETE ALL .MEM FILES AS THEY CANNOT
* BE MOVED BETWEEN OPERATING SYSTEMS.
RESTORE FROM ADD
* WE ASSUME ENTER DATE IS TODAY
STORE DTOC(DATE()) TO mentered
STORE DTOC(DATE()) TO mshipped
* we went to the bottom of the file - i.e. the last record -
* we add one to that and get 4 digits of the order number
STORE RECNO() TO ord_num
STORE ORD_NUM + 1 TO ORD_NUM
* change to character field from numeric
STORE STR(ord_num,4,0) TO ord_num1
* however, we want the order number to give us some date data
* so we will use the date as part of the order number
* it will be nnnnMMDDY. only way to get a duplicate order number
* would be to add records, delete, pack and add more records on same
* so please - pack at the end of the day
STORE ord_num1 + SUBSTR(DTOC(DATE()),1,2) + SUBSTR(DTOC(DATE()),4,2) + SUBSTR(DTOC(DATE()),8,1)
STORE 'Y' TO MCOMP
STORE 'N' TO MCATALOG
STORE 'ADD RECORDS MODULE' TO MODE
STORE 'ENTER AS MANY RECORDS AS YOU WANT.' TO PROMPT1
STORE "When done, enter 'blank' for last name" TO prompt2
STORE "or Control 'Q' to end session" TO prompt3
IF SUBSTR(DTOC(DATE()),1,2) <> '00' .AND. mdayu = ' '
STORE DTOC(DATE()) to mdayu
ENDIF
STORE DTOC(DATE()) TO mshipped
* NOTE THE SHIFTS BETWEEN GET AND SAY. THIS SCREEN IS
* REALLY A 3 STAGE SCREEN. THE FIRST PART CONTAINS THE
* CUSTOMER DATA. THEN WE INPUT ALL VOLUMES ORDERED AND
* THE PROGRAM AUTOMATICALLY WRITES THEM TO THE FILE
* UNTIL FINISHED. BECAUSE OF THIS WE WANT TO MAKE SURE
* DATA FROM THE LAST RECORD IS ELIMINATED.
*FIRST MAKE SURE WE WANT TO ADD A RECORD
@ 1,25 SAY MODE
@ 3,19 SAY MORDER PICTURE '999999999'
@ 3,53 SAY ' '
@ 4,19 GET MLNAME
@ 4,53 SAY MFNAME
@ 5,19 SAY MADDR1
@ 6,19 SAY MADDR2
@ 7,19 SAY MADDR3
@ 8,19 SAY MCITY
@ 8,53 SAY MSTATE PICTURE '!!'
@ 8,70 SAY MZIP PICTURE '99999'
@ 9,19 SAY ' '
@ 9,53 SAY ' '
@ 11,62 SAY MSTATUS
@ 12,11 SAY MVOL1
@ 14,11 SAY MREM1
@ 15,11 SAY MREM2
@ 16,11 SAY MBO
@ 17,53 SAY ' '
@ 18,11 SAY ' '
@ 18,35 SAY ' '
@ 18,70 SAY ' '
@ 20,12 SAY PROMPT1
@ 21,12 SAY PROMPT2
@ 22,12 SAY PROMPT3
READ
* IF WE DO WANT TO ADD A RECORD - THEN DO IT
IF MLNAME <> ' '
@ 1,25 SAY MODE
@ 3,19 SAY MORDER PICTURE '999999999'
@ 3,53 SAY ' '
@ 4,19 SAY MLNAME
@ 4,53 GET MFNAME
@ 5,19 GET MADDR1
@ 6,19 GET MADDR2
@ 7,19 GET MADDR3
@ 8,19 GET MCITY
@ 8,53 GET MSTATE PICTURE '!!'
@ 8,70 GET MZIP PICTURE '99999'
@ 9,19 GET MAMT
@ 9,53 SAY MENTERED PICTURE '99/99/99'
@ 11,62 SAY MSTATUS
@ 12,11 SAY MVOL1
@ 14,11 SAY MREM1
@ 15,11 SAY MREM2
@ 16,11 SAY MBO
@ 17,53 SAY ' '
@ 18,11 SAY MBO_SHIP PICTURE '99/99/99'
@ 18,35 SAY MBO2_SHIP PICTURE '99/99/99'
@ 18,70 SAY MDAYU PICTURE '99/99/99'
@ 20,12 SAY PROMPT1
@ 21,12 SAY PROMPT2
@ 22,12 SAY PROMPT3
READ
* ALWAYS USE CLEAR GETS AFTER GETS. OTHERWISE YOUR PROGRAM WILL
* HAVE A HEART ATTACK. SEE PAGE 71 OF THE dbase manual
CLEAR GETS
* WE NOW GO TO PART 2 OF THE SCREEN. WE STORE 999
* TO MVOL SO THAT ON OUR LAST RECORD WE CAN EXIT THE ADD EASIER
STORE .T. TO GETIT
STORE ' ' TO MSTATUS
* ADD AS MANY RECORDS AS YOU WANT. MSTATUS SHOWS WHETHER THE
* ITEM WAS IN STOCK. MVOL1 SHOWS WHAT WAS IN STOCK, MBO WHAT WAS
* BACKORDERED. IF 999 NO MORE VOLUMES
DO WHILE GETIT
@ 11,62 SAY MSTATUS
@ 12,11 SAY MVOL1
@ 16,11 SAY MBO
@ 11,48 GET MVOL
READ
@ 11,62
CLEAR GETS
IF MVOL = 999
*!! Logical constant converted.
STORE .F. TO GETIT
STORE ' ' TO MSTATUS
*!! Logical constant converted.
STORE .F. TO AVOID
* IF THE VOLUME WAS NOT 999 GO TO THE OTHER DATA BASE
ELSE
USE STOCK
* FIND THE RECORD FOR THAT VOLUME. WE USE THE +1 BECAUSE OF VOL. 0
* YOU COULD JUST AS EASILY (ALTHOUGH SLIGHTLY SLOWER) FIND
* ANY DATA IN AN INDEXED OR NON-INDEXED FILE.
* YOU COULD ALSO USE THE SELECT PRIMARY AND SECONDARY COMMAND HERE -
* BUT FOR THIS DATA BASE, THIS IS THE SIMPLEST WAY OF DOING IT.
LOCATE FOR RECNO() = mvol + 1
* IF THE VOLUME WAS IN THE FILE
IF .NOT. EOF()
GOTO MVOL + 1
* WE NEED ANOTHER CONTROL VARIABLE - WITHOUT IT VOLUMES NOT
* IN THE FILE WOUND UP BEING WRITTEN TO THE BACKORDERED LIST
*!! Logical constant converted.
STORE .T. TO AVOID
* WE NOW WRITE TO THE OTHER FILE AND ADJUST THE INVENTORY
IF OPEN_INV - BACK_ORD - WAIT_SHIP + RECVD + PEND > 0
*!! Logical constant converted.
REPLACE CHANGE1 WITH .T.
REPLACE OPEN_INV WITH OPEN_INV -1
STORE 'IN STOCK ' TO MSTATUS
REPLACE SHIP WITH SHIP + 1
REPLACE DAYCH1 WITH MENTERED
ELSE
REPLACE CHANGE2 WITH .T.
REPLACE BACK_ORD WITH BACK_ORD+1
STORE 'BACKORDER' TO MSTATUS
REPLACE BACKSHIP WITH BACKSHIP + 1
REPLACE DAYCH2 WITH MENTERED
ENDIF OPEN:INV
ELSE
* if no such volume
STORE 'TRY AGAIN ' TO MSTATUS
STORE .F. TO AVOID
ENDIF .NOT. EOF
* BACK TO OUR MAIN DATA BASE
* TELL THEM WHAT YOU FOUND AT STATUS AND LIST IT ON THE ORDER OR BACKORDER LINE
* NOTE HOW WE BUILD UP THE STRING THAT IS THE LIST OF VOLUMES
USE SIG/M
IF AVOID = .T.
IF MSTATUS = 'IN STOCK'
STORE TRIM(mvol1) + STR(mvol,3,0) + ',' TO mvol1
ELSE
STORE TRIM(mbo) + STR(mvol,3,0) + ',' TO mbo
ENDIF mstatus = 'IN STOCK"
ENDIF AVOID
ENDIF MVOL
ENDDO WHILE GETIT
* BLANK THE STATUS LINE AND GO TO PART 3 OF THE SCREEN AFTER 999
* NOTE THAT YOU NEED NOT ENTER DATA IN THE ORDER IT APPEARS ON
* THE SCREEN - WE DON'T KNOW IF THE ORDER IS COMPLETE OR BACKORDERED
* UNTIL THE END. YOU SET THE ORDER - BUT DON'T DRIVE THE USER CRAZY.
STORE ' ' TO MSTATUS
@ 11,62 SAY MSTATUS
@ 14,11 GET MREM1
@ 15,11 GET MREM2
@ 17,53 GET MCATALOG PICTURE '!'
@ 18,11 GET MBO_SHIP PICTURE '99/99/99'
@ 18,35 GET MBO2_SHIP PICTURE '99/99/99'
@ 9,70 GET MSHIPPED PICTURE '99/99/99'
@ 3,53 GET MCOMP PICTURE '!'
READ
CLEAR GETS
* DETERMINE IF THERE IS INCOMPLETE OR INCORRECT DATA. THIS PART OF THE
* PROGRAM CAN HANDLE A SUBSTANTIAL EDITING MODULE -
DO CASE
CASE .NOT. (mcomp = 'Y' .OR. mcomp = 'N')
STORE .T. TO ERROR
CASE .NOT. (mcatalog = 'Y' .OR. mcatalog = 'N' .OR. mcatalog = 'B')
STORE .T. TO ERROR
OTHERWISE
STORE .F. TO ERROR
ENDCASE
IF ERROR
@ 01,00
@ 20,00
@ 21,00
@ 22,00
@ 1,18 SAY 'PLEASE CORRECT THE INDICATED DATA'
STORE .T. TO AN_ERROR
DO WHILE AN_ERROR
DO CASE
CASE .NOT. (mcomp = 'Y' .OR. mcomp = 'N')
@ 21,15 SAY 'Must answer "Y" or "N" if shipping completed '
@ 3,53 GET MCOMP PICTURE '!'
READ
@ 1,00
CASE .NOT. (mcatalog = 'Y' .OR. mcatalog = 'N' .OR. mcatalog = 'B')
@ 21,15 SAY 'Catalog is either "Y", "N" or "B" (backordered)'
@ 17,53 GET MCATALOG PICTURE '!'
READ
@ 1,00
OTHERWISE
STORE .F. TO AN_ERROR
ENDCASE
ENDDO WHILE AN:ERROR
ENDIF ERROR
* GIVE THEM A SECOND TRY AT THE DATA. IN MOST CASES IT WILL BE CORRECT, BUT
* WHY NOT GIVE THEM ANOTHER CRACK. IT IS SIMPLER TO REPEAT THE WHOLE ROUTINE
* ALTHOUGH YOU COULD LOOP BACK TO THE BEGINNING. WE ALSO WANT A WAY TO
* READJUST THE INVENTORY INCASE YOU PUT IN A WRONG VOLUME.
STORE 'Y' TO COMMAND
@ 20,00
@ 21,00
@ 22,00
@ 21,15 SAY 'IS THE ABOVE CORRECT ? '
@ 21,48 GET COMMAND PICTURE '!'
READ
@ 21,00
IF COMMAND = 'N'
CLEAR
@ 04,00 SAY "DO YOU WANT TO ELIMINATE ANY VOLUMES ON THE ORDERED OR BACKORDER LIST ? "
@ 04,70 GET COMMAND PICTURE '!'
READ
IF COMMAND = 'Y'
@ 06,00 SAY "Items you enter here will automatically be adjusted in the Inventory."
@ 07,00 SAY "After you have made the changes you will then be able to edit"
@ 08,00 SAY "the list of disks shipped and/or backordered."
@ 09,00 SAY "Enter 999 when done"
*!! Logical constant converted.
STORE .T. TO GETIT
STORE 999 TO MVOL
DO WHILE GETIT
@ 11,10 SAY "INVENTORY TO BE ADJUSTED FOR VOLUME "
@ 14,02 SAY "Volumes"
@ 14,11 SAY MVOL1
@ 16,00 SAY "Backorder"
@ 16,11 SAY MBO
@ 11,48 GET MVOL
READ
CLEAR GETS
IF MVOL = 999
STORE .F. TO GETIT
ELSE
USE STOCK
LOCATE FOR RECNO() = mvol + 1
IF .NOT. EOF()
GOTO MVOL + 1
DO CASE
CASE OPEN_INV - BACK_ORD - WAIT_SHIP + RECVD + PEND > 0
REPLACE OPEN_INV WITH OPEN_INV +1
REPLACE SHIP WITH SHIP -1
CASE (open_inv - back_ord - wait_ship + recvd + pend = 0 .AND. back_
REPLACE OPEN_INV WITH OPEN_INV + 1
REPLACE SHIP WITH SHIP -1
CASE BACK_ORD >0
REPLACE BACK_ORD WITH BACK_ORD-1
REPLACE BACKSHIP WITH BACKSHIP -1
ENDCASE
ENDIF .NOT. EOF
USE SIG/M
ENDIF MVOL
ENDDO WHILE GETIT
* AT THIS POINT WE ARE DOING SOME TIGHT EDITING - SO PROTECT AGAINST
* A SLIP OF THE FINGERS
SET CONFIRM ON
@ 11,10 SAY "Please adjust data 'Volumes' and/or 'Backorders' "
@ 14,02 SAY "Volumes"
@ 14,11 GET MVOL1
@ 16,00 SAY "Backorder"
@ 16,11 GET MBO
READ
CLEAR GETS
SET CONFIRM OFF
* BACK TO NORMAL EDITING
ENDIF COMMAND = Y
* NOW THAT VOLUME NUMBERS TAKEN CARE OF WE CAN ADJUST THE REST OF
* THE DATA
CLEAR
STORE 'ADD RECORDS MODULE' TO MODE
STORE 'ENTER AS MANY RECORDS AS YOU WANT.' TO PROMPT1
STORE "When done, enter blank for last name " TO prompt2
STORE "or Control 'Q' to end session" TO prompt3
@ 1,25 SAY MODE
@ 2, 0 SAY "+---------------------------------------"
@ 2,39 SAY "---------------------------------------+"
@ 3, 5 SAY "ORDER NUMBER:"
@ 3,43 SAY "Complete:"
@ 4, 8 SAY "Last name:"
@ 4,46 SAY "First:"
@ 5,10 SAY "Address:"
@ 6, 9 SAY "(line 2):"
@ 7, 9 SAY "(line 3):"
@ 8,13 SAY "City:"
@ 8,46 SAY "State:"
@ 8,65 SAY "ZIP:"
@ 9,11 SAY "Amount:"
@ 9,46 SAY "Enter:"
@ 9,64 SAY "Ship "
@ 11,00 SAY "Enter Individual Volumes Ordered (999 when done): "
@ 12, 2 SAY "Volumes:"
@ 14, 2 SAY "Remarks:"
@ 16, 0 SAY "Backorder:"
@ 17,44 SAY "Catalog:"
@ 18, 2 SAY "Shipped:"
@ 18,26 SAY "Shipped:"
@ 18,62 SAY "Update:"
@ 19, 0 SAY "+---------------------------------------"
@ 19,39 SAY "---------------------------------------+"
@ 20,12 SAY PROMPT1
@ 21,12 SAY PROMPT2
@ 22,12 SAY PROMPT3
@ 3,19 GET MORDER PICTURE '999999999'
@ 3,53 SAY MCOMP PICTURE '!'
@ 4,19 GET MLNAME
@ 4,53 GET MFNAME
@ 5,19 GET MADDR1
@ 6,19 GET MADDR2
@ 7,19 GET MADDR3
@ 8,19 GET MCITY
@ 8,53 GET MSTATE PICTURE '!!'
@ 8,70 GET MZIP PICTURE '99999'
@ 9,19 GET MAMT
@ 9,53 SAY MENTERED PICTURE '99/99/99'
@ 9,70 SAY MSHIPPED PICTURE '99/99/99'
@ 11,60 SAY MSTATUS
@ 12,11 SAY MVOL1
@ 14,11 SAY MREM1
@ 15,11 SAY MREM2
@ 16,11 SAY MBO
@ 17,53 SAY MCATALOG
@ 18,11 SAY MBO_SHIP PICTURE '99/99/99'
@ 18,35 SAY MBO2_SHIP PICTURE '99/99/99'
@ 18,70 SAY MDAYU PICTURE '99/99/99'
READ
CLEAR GETS
STORE .T. TO GETIT
STORE 999 TO MVOL
STORE ' ' TO MSTATUS
DO WHILE GETIT
@ 11,60 SAY MSTATUS
@ 12,11 SAY MVOL1
@ 16,11 SAY MBO
@ 11,48 GET MVOL
READ
@ 11,60
CLEAR GETS
IF MVOL = 999
STORE .F. TO GETIT
STORE ' ' TO MSTATUS
STORE .F. TO AVOID
ELSE
USE STOCK
LOCATE FOR RECNO() = mvol + 1
IF .NOT. EOF()
GOTO MVOL + 1
STORE .T. TO AVOID
IF OPEN_INV - BACK_ORD - WAIT_SHIP + RECVD + PEND > 0
REPLACE CHANGE1 WITH .T.
REPLACE OPEN_INV WITH OPEN_INV -1
STORE 'IN STOCK ' TO MSTATUS
REPLACE SHIP WITH SHIP + 1
REPLACE DAYCH1 WITH MENTERED
ELSE
REPLACE CHANGE2 WITH .T.
REPLACE BACK_ORD WITH BACK_ORD+1
STORE 'BACKORDER' TO MSTATUS
REPLACE BACKSHIP WITH BACKSHIP +1
REPLACE DAYCH2 WITH MENTERED
ENDIF OPEN:INV
ELSE
STORE 'TRY AGAIN ' TO MSTATUS
STORE .F. TO AVOID
ENDIF .NOT. EOF
ENDIF MVOL
USE SIG/M
IF AVOID = .T.
IF MSTATUS = 'IN STOCK'
STORE TRIM(mvol1) + STR(mvol,3,0) + ',' TO mvol1
ELSE
STORE TRIM(mbo) + STR(mvol,3,0) + ',' TO mbo
ENDIF MSTATUS
ENDIF AVOID
ENDDO WHILE GETIT
STORE ' ' TO MSTATUS
@ 11,60 SAY MSTATUS
@ 14,11 GET MREM1
@ 15,11 GET MREM2
@ 17,53 GET MCATALOG PICTURE '!'
@ 18,11 GET MBO_SHIP PICTURE '99/99/99'
@ 18,35 GET MBO2_SHIP PICTURE '99/99/99'
@ 9,70 GET MSHIPPED PICTURE '99/99/99'
@ 3,53 GET MCOMP PICTURE '!'
READ
CLEAR GETS
ENDIF COMMAND = N
* OUR ADDING AND EDITING IS DONE - LET US ADD THE RECORD TO THE FILE
APPEND BLANK
REPLACE ORDER WITH MORDER, COMP WITH MCOMP
REPLACE LNAME WITH MLNAME, FNAME WITH MFNAME
REPLACE ADDR1 WITH MADDR1, ADDR2 WITH MADDR2, ADDR3 WITH MADDR3
REPLACE CITY WITH MCITY, STATE WITH MSTATE, ZIP WITH MZIP
REPLACE VOL1 WITH MVOL1
REPLACE AMT WITH MAMT
REPLACE ENTERED WITH MENTERED, SHIPPED WITH MSHIPPED
REPLACE REM1 WITH MREM1, REM2 WITH MREM2
REPLACE BO WITH MBO, CATALOG WITH MCATALOG, BO_SHIP WITH MBO_SHIP
REPLACE BO2_SHIP WITH MBO2_SHIP, DAYU WITH MDAYU
REPLACE NEW WITH .T.
STORE .T. TO MORE
ELSE
STORE .F. TO MORE
ENDIF MLNAME = ' '
ENDDO WHILE MORE
* IF NO MORE RECORDS TO BE ADDED - ASK IF THEY WANT TO INDEX
STORE 'Y' TO COMMAND
CLEAR
@ 02,10 SAY 'THE NEWLY ADDED ORDERS WILL NOT APPEAR'
@ 03,10 SAY 'TO BE IN THE FILE UNTIL THEY ARE RE-INDEXED'
@ 04,10 SAY 'AND THIS WILL TAKE SOME TIME....'
@ 06,10 SAY 'YOU MAY RE-INDEX NOW OR BY USING THE'
@ 07,10 SAY 'MAINTENANCE FUNCTION NUMBER 6'
@ 10,10 SAY 'Do you wish to RE-INDEX records NOW (Y/N)'
@ 10,52 GET COMMAND PICTURE '!'
READ
IF COMMAND = 'Y'
@ 14,10 SAY 'RECORDS ARE NOW BEING RE-INDEXED. '
@ 16,10 SAY 'PLEASE BE PATIENT AS THIS TAKES A LITTLE TIME....'
STORE CHR(PEEK(063)) TO dr
INDEX ON UPPER(lname) TO &dr.:orders
ENDIF COMMAND = Y
* get our drive letter
STORE CHR(PEEK(063)) TO dr
SET INDEX TO &DR.:ORDERS
RELEASE ALL
* set the colons back on
SET DELIMITER ON
STORE .T. TO FIRST