NOTE - SEARCH1.SIG - COMPREHENSIVE ORDERS SEARCH COMMAND FILE NOTE - NOTE - THIS COMMAND FILE WAS CREATED USING - fastBASE (TM) (VERSION 1.3) NOTE - "THE dBASE II COMMAND FILE GENERATOR" DEVELOPED BY: NOTE - FOURCOLOR DATA SYSTEMS INC. NOTE - 7011 MALABAR STREET NOTE - DAYTON, OHIO 45459 NOTE - PHONE: (513) 433-3780 NOTE - NOTE - SEARCH BY INDEX - OPERATOR CAN SEARCH DATABASE IN ORDER NOTE - OF ANY INDEX FILE. NOTE - NOTE - INDEX FILES - INDICES ARE OF THE FOLLOWING FORM: NOTE - A. CHARACTER FIELDS ARE MADE UPPERCASE. NOTE - (THIS WILL ALLOW THE FIND COMMAND TO NOTE - IGNORE UPPER AND LOWER CASE NOTE - DISTINCTIONS.) NOTE - B. ALL NUMERIC FIELDS ARE CONVERTED TO NOTE - CHARACTER STRINGS. NOTE - C. EXAMPLE: NOTE - IF AN INDEX CONSISTS OF A NUMERIC NOTE - FIELD - FIELDNUM (N,8,2) AND A NOTE - CHARACTER FIELD - FIELDCHAR, THEN NOTE - fastBASE WILL DEFINE THE INDEX AS NOTE - STR(FIELDNUM,8,2) + !(FIELDCHAR). NOTE - NOTE - SEARCH BY PART OF FIELD - OPERATOR CAN SELECT ANY CHARACTER NOTE - FIELD IN THE DATABASE. THEN OPERATOR NOTE - CAN ENTER ANY POSSIBLE SUB-STRING. NOTE - SEARCH WILL THEN DISPLAY EVERY NOTE - RECORD WITH THIS SUB-STRING IN ANY NOTE - PART OF THE SELECTED FIELD. NOTE - NOTE - IF ANY RECORD IS SELECTED BY OPERATOR, THEN THIS SEARCH ROUTINE NOTE - WILL RETURN TO THE CALLING COMMAND FILE THE dBASE II RECORD NOTE - NUMBER IN THE MEMORY VARIABLE 'RECNO' OTHERWISE 'RECNO' NOTE - WILL HAVE THE VALUE ZERO. NOTE - NOTE - WHEN CALLING THIS SEARCH ROUTINE, A MEMORY VARIABLE WITH THE NOTE - NAME 'DR' MUST EXIST. FURTHER THIS MEMORY VARIABLE MUST EITHER NOTE - HAVE THE VALUE ' ' OR 'X:' WHERE X IS ANY ALPHABETIC NOTE - CHARACTER CORRESPONDING TO A VALID DISK DRIVE (EG. A:). NOTE - STORE 'Detailed Search' TO mode STORE CHR(PEEK(063))TO dr ERASE @ 1,20 SAY '*** SEARCH FOR ORDERS ***' @ 3,20 SAY 'SEARCH METHOD:' @ 5,25 SAY '1. SEARCH BY INDEX' @ 6,25 SAY '2. SEARCH PART OF FIELD' STORE ' ' TO EMETH DO WHILE EMETH <> '1' .AND. EMETH <> '2' @ 8,25 SAY ' METHOD? (1,2) ' GET EMETH READ ENDDO IF EMETH = '1' STORE ' ' TO KEYVAR1 @ 10,20 SAY 'ENTER LASTNAME ' GET KEYVAR1 READ STORE KEYVAR1 TO FINDSTRING RELEASE KEYVAR1 USE &DR.:sig/m.DBF INDEX &DR.:ORDERS.NDX NOTE - NOTE - DETERMINE RECORD NUMBER OF FIRST AND LAST RECORD IN DATABASE NOTE - IF # > 0 STORE # TO FIRSTREC GOTO BOTTOM STORE # TO LASTREC NOTE - NOTE - TRIM RIGHT HAND SPACES AND ZEROES FROM FINDSTRING NOTE - ALSO SET FINDSTRING TO UPPER CASE NOTE - STORE TRIM(!(FINDSTRING)) TO FINDSTRING STORE T TO SHRINK DO WHILE SHRINK STORE F TO SHRINK STORE T TO TRIMZERO DO WHILE TRIMZERO .AND. LEN(FINDSTRING) > 1 STORE $(FINDSTRING,LEN(FINDSTRING),1) TO LASTCHAR IF LASTCHAR = '0' .OR. LASTCHAR = ' ' STORE $(FINDSTRING,1,LEN(FINDSTRING)-1) TO FINDSTRING LOOP ENDIF STORE F TO TRIMZERO ENDDO FIND '&FINDSTRING' IF # <> 0 STORE # TO FINDRECNO LOOP ENDIF STORE FINDSTRING + ' ' TO FINDSTRING NOTE - NOTE - USE FIRST 3 CHARACTERS OF FINDSTRING FOR 'FIND' COMMAND NOTE - STORE $(FINDSTRING,1,3) TO FINDSTRING FIND '&FINDSTRING' IF # <> 0 STORE # TO FINDRECNO LOOP ENDIF STORE FINDSTRING + ' ' TO FINDSTRING STORE $(FINDSTRING,1,1) TO FINDSTRING FIND '&FINDSTRING' IF # <> 0 STORE # TO FINDRECNO LOOP ENDIF GOTO TOP STORE # TO FINDRECNO ENDDO STORE FINDRECNO TO STARTREC RELEASE FINDRECNO, FINDSTRING, SHRINK, LASTCHAR, TRIMZERO STORE T TO FILESRCH STORE 'F' TO EOPTION DO WHILE FILESRCH NOTE - NOTE - IF DATABASE HAS AT LEAST 10 RECORDS THEN SEARCH CAN OPERATE NOTE - IN 'FAST' MODE. IN THIS MODE, 10 RECORDS AT A TIME ARE NOTE - DISPLAYED ON THE CRT. NOTE - IF EOPTION = 'F' STORE 'FAST' TO SRCHMODE GOTO TOP SKIP 9 IF # = LASTREC STORE 'D' TO EOPTION ENDIF GOTO STARTREC ENDIF IF EOPTION = 'D' STORE 'DETAIL' TO SRCHMODE ENDIF IF EOPTION = 'R' STORE 0 TO RECNO STORE F TO FILESRCH LOOP ENDIF IF SRCHMODE = 'FAST' STORE ' ' TO EOPTION STORE T TO FASTSRCH DO WHILE FASTSRCH ERASE STORE 1 TO SEARCHLINE STORE # TO RECNO STORE T TO CHECKPOS1 DO WHILE CHECKPOS1 IF RECNO = LASTREC STORE 10 TO SEARCHLINE SKIP - 9 STORE F TO CHECKPOS1 LOOP ENDIF SKIP 8 IF # <> LASTREC SKIP - 8 STORE F TO CHECKPOS1 LOOP ENDIF IF # = LASTREC DO WHILE RECNO <> # SKIP - 1 ENDDO STORE 10 TO SEARCHLINE STORE T TO CHECKPOS2 DO WHILE CHECKPOS2 STORE SEARCHLINE - 1 TO SEARCHLINE SKIP 1 IF # = LASTREC STORE F TO CHECKPOS2 LOOP ENDIF IF SEARCHLINE < 0 STORE F TO CHECKPOS2 LOOP ENDIF ENDDO SKIP - 9 STORE F TO CHECKPOS1 ENDIF ENDDO STORE # TO STARTREC NOTE - NOTE - USE THE SEARCH AND LIST REPORT CREATED BY fastBASE, TO DISPLAY NOTE - 10 RECORDS ON THE CRT AT ONE TIME. NOTE - REPORT NEXT 10 FORM &DR.:SIG/M.FRM PLAIN @ 23,0 SAY 'N (NEXT), P (PREVIOUS), J (JUMP), D (DISPLAY), R (RETURN).' GOTO STARTREC IF EOPTION = 'P' STORE 10 TO SEARCHLINE SKIP 9 DO WHILE # <> PREVREC .AND. SEARCHLINE > 1 STORE SEARCHLINE - 1 TO SEARCHLINE SKIP - 1 ENDDO ENDIF IF EOPTION <> 'P' IF SEARCHLINE <> 1 STORE SEARCHLINE - 1 TO SEARCHLINE SKIP SEARCHLINE STORE SEARCHLINE + 1 TO SEARCHLINE ENDIF ENDIF SET COLON OFF DO WHILE SEARCHLINE > 0 .AND. SEARCHLINE < 11 STORE ' ' TO EOPTION DO WHILE EOPTION <> 'N' .AND. EOPTION <> 'P' .AND. EOPTION <> 'J' .AND. EOPTION <> 'D' .AND. EOPTION <> 'R' @ (2 * SEARCHLINE) + 1, 0 GET EOPTION READ STORE !(EOPTION) TO EOPTION IF EOPTION = 'N' .AND. # = LASTREC STORE ' ' TO EOPTION ENDIF IF EOPTION = 'P' .AND. # = FIRSTREC STORE ' ' TO EOPTION ENDIF ENDDO @ (2 * SEARCHLINE) + 1, 0 SAY ' ' IF EOPTION = 'N' STORE SEARCHLINE + 1 TO SEARCHLINE SKIP 1 LOOP ENDIF IF EOPTION = 'P' STORE SEARCHLINE - 1 TO SEARCHLINE SKIP - 1 STORE # TO PREVREC LOOP ENDIF STORE 0 TO SEARCHLINE ENDDO IF EOPTION = 'P' SKIP - 9 ENDIF IF EOPTION = 'J' SET COLON ON STORE 0 TO INCREMENT @ 23,0 SAY ' ENTER JUMP INCREMENT (+ OR -) ' @ 23,45 GET INCREMENT READ SET COLON OFF IF INCREMENT > 0 SKIP INCREMENT ENDIF IF INCREMENT < 0 STORE 0 - INCREMENT TO INCREMENT SKIP - INCREMENT ENDIF ENDIF IF EOPTION = 'D' .OR. EOPTION = 'R' STORE F TO FASTSRCH ENDIF ENDDO RELEASE FASTSRCH, SEARCHLINE, PREVREC, CHECKPOS1, CHECKPOS2 SET COLON ON ENDIF IF SRCHMODE = 'DETAIL' STORE T TO DETLSRCH DO WHILE DETLSRCH ERASE @ 1,25 SAY mode @ 2,0 SAY '+---------------------------------------' @ 2,39 SAY '--------------------------------------+' @ 4,5 SAY 'ORDER NUMBER Complete' @ 5,8 SAY 'Last name First' @ 6,10 SAY 'Address' @ 7,9 SAY '(line 2)' @ 8,9 SAY '(line 3)' @ 9,13 SAY 'City State ZIP' @ 11,2 SAY 'Volumes' @ 13,3 SAY 'Amount Enter Ship' @ 14,2 SAY 'Remarks' @ 15,2 SAY 'Remarks' @ 17,0 SAY 'Backorder' @ 18,44 SAY 'Catalog' @ 19,2 SAY 'Shipped Shipped Update' @ 20,0 SAY '+--------------------------------------' @ 20,39 SAY '--------------------------------------+' @ 4,18 GET ORDER @ 5,18 GET LNAME @ 5,52 GET FNAME @ 6,18 GET ADDR1 @ 7,18 GET ADDR2 @ 8,18 GET ADDR3 @ 9,18 GET CITY @ 9,52 GET STATE @ 9,70 GET ZIP @ 11,10 GET VOL1 @ 13,10 GET AMT @ 13,52 GET ENTERED @ 13,69 GET SHIPPED @ 14,10 GET REM1 @ 15,10 GET REM2 @ 17,10 GET BO @ 18,53 GET CATALOG @ 19,10 GET BO:SHIP @ 19,34 GET BO2:SHIP @ 19,69 GET DAYU @ 4,52 GET COMP CLEAR GETS @ 23,0 SAY 'N (NEXT), P (PREVIOUS), J (JUMP), F (FAST SEARCH), R (RETURN)' STORE ' ' TO EOPTION DO WHILE EOPTION <> 'N' .AND. EOPTION <> 'P' .AND. EOPTION <> 'J' .AND. EOPTION <> 'F' .AND. EOPTION <> 'R' @ 23,74 GET EOPTION READ STORE !(EOPTION) TO EOPTION IF EOPTION = 'N' .AND. # = LASTREC STORE ' ' TO EOPTION ENDIF IF EOPTION = 'P' .AND. # = FIRSTREC STORE ' ' TO EOPTION ENDIF ENDDO IF EOPTION = 'N' IF # = LASTREC LOOP ENDIF SKIP 1 ENDIF IF EOPTION = 'P' SKIP - 1 ENDIF IF EOPTION = 'J' STORE 0 TO INCREMENT @ 23,0 SAY ' ENTER JUMP INCREMENT (+ OR -) ' @ 23,45 GET INCREMENT READ IF (# = LASTREC .AND. INCREMENT > 0) .OR. (INCREMENT = 0) LOOP ENDIF IF INCREMENT > 0 SKIP INCREMENT ENDIF IF INCREMENT < 0 STORE 0 - INCREMENT TO INCREMENT SKIP - INCREMENT ENDIF ENDIF IF EOPTION = 'F' .OR. EOPTION = 'R' STORE F TO DETLSRCH STORE # TO STARTREC ENDIF ENDDO RELEASE DETLSRCH ENDIF RELEASE SRCHMODE ENDDO ENDIF ENDIF NOTE - NOTE - SEARCH FOR SUB-STRING THAT IS PART OF A SELECTED FIELD. NOTE - IF EMETH = '2' SET INDEX TO ERASE STORE 'Detailed Search' TO mode @ 10,20 SAY 'SELECT FIELD NUMBER ' @ 12,20 SAY 'ENTER SEARCH DATA ' @ 14,0 SAY ' 1. ORDER NO. 2. COMPLETED 3. LASTNAME 4. FIRST NAME 5.ADDRESS' @ 15,0 SAY ' 6. ADDR-LINE2 7. ADDR-LINE3 8. CITY 9. STATE 10. ZIP' @ 16,0 SAY '11. VOLUMES 12. ENTERED 13. SHIPPED 14. REMARKS 15. REMARKS-2' @ 17,0 SAY '16. BACKORDER 17. SHIPPED 18. SHIPPED 19. UPDATE ' STORE ' ' TO EVAR DO WHILE VAL(EVAR) < 1 .OR. VAL(EVAR) > 23 @ 10,20 SAY 'SELECT FIELD NUMBER ' GET EVAR PICTURE '99' READ ENDDO STORE ' ' TO EPART @ 12,20 SAY 'ENTER SEARCH DATA ' GET EPART READ IF VAL(EVAR) = 1 STORE 'ORDER' TO PARTFIELD ENDIF IF VAL(EVAR) = 2 STORE 'COMP' TO PARTFIELD ENDIF IF VAL(EVAR) = 3 STORE 'LNAME' TO PARTFIELD ENDIF IF VAL(EVAR) = 4 STORE 'FNAME' TO PARTFIELD ENDIF IF VAL(EVAR) = 5 STORE 'ADDR1' TO PARTFIELD ENDIF IF VAL(EVAR) = 6 STORE 'ADDR2' TO PARTFIELD ENDIF IF VAL(EVAR) = 7 STORE 'ADDR3' TO PARTFIELD ENDIF IF VAL(EVAR) = 8 STORE 'CITY' TO PARTFIELD ENDIF IF VAL(EVAR) = 9 STORE 'STATE' TO PARTFIELD ENDIF IF VAL(EVAR) = 10 STORE 'ZIP' TO PARTFIELD ENDIF IF VAL(EVAR) = 11 STORE 'VOL1' TO PARTFIELD ENDIF IF VAL(EVAR) = 12 STORE 'ENTERED' TO PARTFIELD ENDIF IF VAL(EVAR) = 13 STORE 'SHIPPED' TO PARTFIELD ENDIF IF VAL(EVAR) = 14 STORE 'REM1' TO PARTFIELD ENDIF IF VAL(EVAR) = 15 STORE 'REM2' TO PARTFIELD ENDIF IF VAL(EVAR) = 16 STORE 'BO' TO PARTFIELD ENDIF IF VAL(EVAR) = 17 STORE 'BO:SHIP' TO PARTFIELD ENDIF IF VAL(EVAR) = 18 STORE 'BO2:SHIP' TO PARTFIELD ENDIF IF VAL(EVAR) = 19 STORE 'DAYU' TO PARTFIELD ENDIF USE &DR.:sig/m.DBF STORE TRIM(EPART) TO EPART RELEASE EVAR GOTO BOTTOM STORE # TO LASTREC GOTO TOP STORE 0 TO RECNO STORE T TO PARTSRCH STORE ' ' TO EOPTION STORE T TO FIRSTLOOP DO WHILE PARTSRCH IF EOPTION = 'R' STORE 0 TO RECNO STORE F TO PARTSRCH LOOP ENDIF IF RECNO = LASTREC STORE 'R' TO EOPTION LOOP ENDIF IF FIRSTLOOP LOCATE FOR !(EPART) $ !(&PARTFIELD) ENDIF IF .NOT.FIRSTLOOP CONTINUE ENDIF STORE F TO FIRSTLOOP STORE # TO RECNO IF # = LASTREC .AND.(.NOT. EPART $ &PARTFIELD) STORE 'R' TO EOPTION LOOP ENDIF ERASE @ 1,25 SAY mode @ 2,0 SAY '+---------------------------------------' @ 2,39 SAY '--------------------------------------+' @ 4,5 SAY 'ORDER NUMBER Complete' @ 5,8 SAY 'Last name First' @ 6,10 SAY 'Address' @ 7,9 SAY '(line 2)' @ 8,9 SAY '(line 3)' @ 9,13 SAY 'City State ZIP' @ 11,2 SAY 'Volumes' @ 13,3 SAY 'Amount Enter Ship' @ 14,2 SAY 'Remarks' @ 15,2 SAY 'Remarks' @ 17,0 SAY 'Backorder' @ 18,44 SAY 'Catalog' @ 19,2 SAY 'Shipped Shipped Update' @ 20,0 SAY '+--------------------------------------' @ 20,39 SAY '--------------------------------------+' @ 4,18 GET ORDER @ 5,18 GET LNAME @ 5,52 GET FNAME @ 6,18 GET ADDR1 @ 7,18 GET ADDR2 @ 8,18 GET ADDR3 @ 9,18 GET CITY @ 9,52 GET STATE @ 9,70 GET ZIP @ 11,10 GET VOL1 @ 13,10 GET AMT @ 13,52 GET ENTERED @ 13,69 GET SHIPPED @ 14,10 GET REM1 @ 15,10 GET REM2 @ 17,10 GET BO @ 18,53 GET CATALOG @ 19,10 GET BO:SHIP @ 19,34 GET BO2:SHIP @ 19,69 GET DAYU @ 4,52 GET COMP CLEAR GETS STORE ' ' TO EOPTION @ 22,12 SAY 'N (NEXT), R (RETURN)' DO WHILE EOPTION <> 'N' .AND. EOPTION <> 'R' @ 22,37 GET EOPTION picture '!' READ ENDDO ENDDO RELEASE PARTSRCH ENDIF RELEASE EMETH, EOPTION, EPART, FILESRCH, LASTREC, FIRSTREC, STARTREC RELEASE PARTFIELD, NUMREC, FIRSTLOOP, EKEYOPT, INCREMENT, MODE SET INDEX TO &dr.:orders STORE t TO FIRST RETURN