* MNDX.CMD - Modify indexes of a file * STORE "DSMNDX" TO FMTNAME SET FORMAT TO &SYS&FMTNAME READ SET FORMAT TO SCREEN ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY MTITLE SET INTE ON @ 5,10 SAY "Index names for drive " + DEFA DISP FILES LIKE *.NDX SELECT SECONDARY COPY STRU EXTE TO &SYS&FMTNAME DISP " " OFF USE &SYS&FMTNAME STORE " " TO FLDNAMES STORE 0 TO FLDCOUNT DO WHILE (.NOT. EOF) .AND. (FLDCOUNT <= 26) IF FLDNAMES = " " STORE !(FIELD:NAME) TO FLDNAMES ELSE STORE FLDNAMES + !(FIELD:NAME) TO FLDNAMES ENDIF STORE FLDCOUNT + 1 TO FLDCOUNT SKIP ENDDO USE &FNAME STORE " " TO ANSWER @ 23,10 SAY "Enter RETURN to continue. " GET ANSWER READ STORE " " TO ANSWER DO WHILE ANSWER <> "0" SELECT PRIMARY ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY MTITLE SET INTE ON @ 5,10 SAY "Index names for " + FDESC STORE 6 TO ROW STORE 1 TO COUNT DO WHILE COUNT < 8 STORE STR(COUNT,1) TO CNT @ ROW+COUNT,10 SAY "Index number "+CNT+" is " GET INDEX&CNT STORE COUNT + 1 TO COUNT ENDDO CLEAR GETS STORE " " TO ANSWER @ 15,10 SAY "Enter index number 1-7 to add, modify or delete an index " GET ANSWER PICTURE "9" @ 16,10 SAY "To quit enter 0 " READ IF ANSWER > "7" .OR. ANSWER < "1" LOOP ENDIF IF INDEX&ANSWER = " " STORE " " TO INAME @ 18,10 SAY "Enter a name for this new index " GET INAME PICTURE "!!!!!!!!" READ STORE F TO CORRECT DO WHILE .NOT. CORRECT STORE " " TO KNAME @ 19,10 SAY "Enter key field name " GET KNAME PICTURE "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" READ IF KNAME = " " STORE T TO CORRECT LOOP ENDIF STORE TRIM(KNAME) TO TKEY STORE 1 TO CHECK DO WHILE CHECK <= FLDCOUNT IF $(FLDNAMES,(10*CHECK)-9,10) = $(KNAME,1,10) STORE FLDCOUNT + 1 TO CHECK STORE T TO CORRECT ELSE STORE CHECK + 1 TO CHECK ENDIF ENDDO IF .NOT. CORRECT STORE " " TO ACCEPT @ 20,10 SAY "That may not be a correct field name. If you believe it to be a" @ 21,10 SAY "correct entry, enter ACCEPT. If not, RETURN. " GET ACCEPT PICTURE "!!!!!!" READ IF ACCEPT = "ACCEPT" STORE T TO CORRECT ELSE @ 20,10 @ 21,10 ENDIF ENDIF ENDDO IF KNAME = " " LOOP ENDIF ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY MTITLE SET INTE ON @ 5,10 SAY "Now indexing on " + TKEY + " to " + INAME SELECT SECONDARY SET TALK ON INDEX ON &TKEY TO &INAME SET TALK OFF * This is very important - do not remove - this means you SET INDEX TO SELECT PRIMARY REPLACE INDEX&ANSWER WITH INAME STORE T TO CORRECT ELSE STORE INDEX&ANSWER TO INAME @ 18,10 SAY "Enter a new name for this index or 'DELETE' to delete it. " GET INAME PICTURE "!!!!!!!!" READ IF INAME = "DELETE " STORE INDEX&ANSWER TO NDXNAME STORE TRIM(NDXNAME) + ".NDX" TO NDXNAME DELETE FILE &NDXNAME REPLACE INDEX&ANSWER WITH " " ELSE STORE INDEX&ANSWER TO OLDNDX STORE TRIM(OLDNDX) + ".NDX" TO OLDNDX STORE TRIM(INAME) + ".NDX" TO NDXNAME IF FILE(NDXNAME) @ 18,10 SAY "That index name is already being used. Please try again. " STORE " " TO ANSWER @ 23,10 SAY "Enter RETURN to continue. " GET ANSWER READ LOOP ENDIF RENAME &OLDNDX TO &NDXNAME REPLACE INDEX&ANSWER WITH INAME ENDIF ENDIF ENDDO SELECT PRIMARY STORE " " TO ALLNDX STORE 1 TO COUNT DO WHILE COUNT < 8 STORE STR(COUNT,1) TO CNT IF INDEX&CNT = " " ELSE IF ALLNDX = " " STORE TRIM(INDEX&CNT) TO ALLNDX ELSE STORE ALLNDX + "," + TRIM(INDEX&CNT) TO ALLNDX ENDIF ENDIF STORE COUNT + 1 TO COUNT ENDDO IF FLD:LIST = " " REPLACE FLD:LIST WITH $(FLDNAMES,1,10) ENDIF REPLACE INDEXES WITH ALLNDX RETURN