* FILE.CMD - Make changes to file parameters * STORE TRIM(CATEGORY) TO CAT STORE TRIM(TITLE) TO MTITLE STORE PARM TO STYPE SELECT PRIMARY STORE "DSFILE" TO DSFILE USE &SYS&DSFILE GO BOTTOM STORE # TO LAST USE &SYS&DSFILE INDEX &SYS&DSFILE&ONE STORE "FILENAME,' ',FILE:DESC" TO FLIST STORE "CATEGORY = CAT" TO MATCH FIND &CAT STORE "The following files are available:" TO MDESC STORE "DSDISP" TO COMMAND DO &SYS&COMMAND IF !(RECORD)="Q" RETURN ENDIF IF !(RECORD)="A" STORE " " TO FNAME STORE " " TO FDESC STORE "DSADDF" TO FMTNAME SET FORMAT TO &SYS&FMTNAME READ SET FORMAT TO SCREEN IF FNAME = " " RETURN ENDIF ERASE @ 1,10 SAY TMARK + " " + CNAME STORE "Adding a new file " TO MTITLE @ 3,10 SAY MTITLE STORE " " TO ANSWER IF FILE(FNAME) @ 5,10 SAY "That filename is already being used. If this file was created" @ 6,10 SAY "using dBASE II and you now wish to incorporate it into your" @ 7,10 SAY "dPROGRAMMER application you should enter 'INC'. If this file" @ 8,10 SAY "is already being used in dPROGRAMMER, enter RETURN which will" @ 9,10 SAY "return to the menus. You should not use this name but you may" @ 10,10 SAY "choose to add a file again using a different name. " GET ANSWER PICTURE "!!!" READ IF ANSWER = "INC" ELSE RETURN ENDIF ELSE @ 5,10 CREATE &FNAME ENDIF SELECT SECONDARY USE &FNAME SELECT PRIMARY USE &SYS&DSFILE INDEX &SYS&DSFILE&ONE APPEND BLANK REPLACE CATEGORY WITH CAT REPLACE FILENAME WITH FNAME REPLACE FILE:DESC WITH FDESC STORE STR(#,5) TO RECORD STORE "DSKEYF" TO FMTNAME SET FORMAT TO &SYS&FMTNAME STORE " " TO ANSWER READ SET FORMAT TO SCREEN IF ANSWER <> "NO" STORE " " TO ANSWER STORE "DSMNDX" TO COMMAND DO &SYS&COMMAND ENDIF ELSE GOTO &RECORD ENDIF STORE TRIM(FILENAME) TO FNAME STORE TRIM(FILE:DESC) TO FDESC STORE TRIM(INDEXES) TO ALLNDX SELECT SECONDARY USE &FNAME SET INDEX TO &ALLNDX DO WHILE T ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF STORE "File maintenance menu" TO MTITLE @ 3,10 SAY MTITLE SET INTE ON @ 5,10 SAY "You have selected " + FDESC STORE " " TO ANSWER @ 7,10 SAY "Your choices are:" @ 8,10 SAY " PACK - Pack and re-index the file" @ 9,10 SAY " DFLD - Display fields in indexes " @ 10,10 SAY " (Above for version 2.4 or greater only)" @ 11,10 SAY " DSTR - Display structure to screen" @ 12,10 SAY " PSTR - Print structure to printer" @ 13,10 SAY " MNDX - Modify indexes and reindex" @ 14,10 SAY " MSAV - Modify structure and save data" @ 15,10 SAY " MDEL - Modify structure and delete data" @ 16,10 SAY " LIST - Modify list of fields on displays" @ 17,10 SAY " RENA - Rename file or file description" @ 18,10 SAY " DELE - Delete file and all it's indexes" @ 19,10 SAY "Enter your choice or just a RETURN to quit " GET ANSWER PICTURE "!!!!" READ IF ANSWER = " " RETURN ENDIF IF ANSWER = "DFLD" .AND. V24 DISPLAY STATUS LOOP ENDIF IF ANSWER = "DSTR" ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF STORE "Display file structure" TO MTITLE @ 3,10 SAY MTITLE SET INTE ON @ 4,10 DISPLAY STRUCTURE DISP " " OFF STORE " " TO ANSWER @ 23,10 SAY "Enter RETURN to continue. " GET ANSWER READ LOOP ENDIF IF ANSWER = "PSTR" STORE " " TO READY @ 21,10 SAY "Enter (P)rint or (Q)uit followed by RETURN " GET READY READ IF !(READY) <> "Q" SET PRINT ON SET SCREEN OFF DISPLAY STRUCTURE EJECT SET PRINT OFF SET SCREEN ON ENDIF LOOP ENDIF IF ANSWER = "MNDX" STORE "Modifying index information" TO MTITLE STORE " " TO ANSWER STORE "DSMNDX" TO COMMAND DO &SYS&COMMAND SELECT SECONDARY USE &FNAME SET INDEX TO &ALLNDX LOOP ENDIF IF ANSWER = "PACK" .AND. V24 ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF STORE "Packing and re-indexing file " TO MTITLE @ 3,10 SAY MTITLE SET INTE ON @ 4,10 DISP "Now packing the file" OFF SET TALK ON PACK SET TALK OFF STORE " " TO ANSWER WAIT LOOP ENDIF IF ANSWER = "MSAV" .OR. ANSWER = "MDEL" IF ANSWER = "MSAV" @ 20,10 SAY "Now saving data" USE &FNAME COPY TO DSSAVEXX @ 21,10 SAY "Enter Y for the next prompt" MODIFY STRUCTURE @ 21,0 @ 22,0 @ 23,0 @ 21,10 SAY "Now recovering saved data" APPEND FROM DSSAVEXX SET INDEX TO &ALLNDX IF V24 REINDEX ELSE PACK ENDIF @ 22,10 SAY "Recovery complete" WAIT ELSE MODIFY STRUCTURE ENDIF LOOP ENDIF IF ANSWER = "LIST" SELECT PRIMARY @ 20,10 SAY "Enter a list of fields for one line displays on screens" @ 21,10 SAY "Enter fields seperated by commas and limit total length to 65" @ 22,10 GET FLD:LIST READ SELECT SECONDARY LOOP ENDIF IF ANSWER = "RENA" STORE FNAME TO OLDNAME STORE " " TO NEWNAME @ 20,10 SAY "If you change the name of a file which is used in programs" @ 21,10 SAY "you will also have to change the name in those program records." @ 22,10 SAY "Enter the new file name or RETURN to keep the same name " GET NEWNAME PICTURE "!!!!!!!!" READ IF NEWNAME <> " " STORE TRIM(NEWNAME) TO FNAME ENDIF @ 20,10 @ 21,10 @ 22,10 IF FNAME <> OLDNAME USE @ 20,10 RENAME &OLDNAME TO &FNAME USE &FNAME SELECT PRIMARY REPLACE FILENAME WITH FNAME SELECT SECONDARY SET INDEX TO &ALLNDX ENDIF STORE P.FILE:DESC TO FDESC @ 20,10 SAY "Enter a description of this file which will appear on" @ 21,10 SAY "all file selection and display screens." @ 22,10 GET FDESC READ SELECT PRIMARY REPLACE FILE:DESC WITH FDESC SELECT SECONDARY LOOP ENDIF IF ANSWER = "DELE" STORE " " TO ANSWER @ 21,10 SAY "Enter RETURN to delete file " + FNAME + " and all it's indexes." @ 22,10 SAY "Enter 'NO' to not delete " GET ANSWER PICTURE '!!' READ IF ANSWER = 'NO' ELSE SET INDEX TO USE SELECT PRIMARY STORE 1 TO COUNT DO WHILE COUNT < 8 STORE STR(COUNT,1) TO CNT IF INDEX&CNT = " " ELSE STORE INDEX&CNT TO NDXNAME STORE NDXNAME + ".NDX" TO NDXNAME DELETE FILE &NDXNAME ENDIF STORE COUNT + 1 TO COUNT ENDDO DELETE PACK SELECT SECONDARY USE DELETE FILE &FNAME RETURN ENDIF LOOP ENDIF @ 21,10 SAY ANSWER + " is not a valid entry, please try again." STORE " " TO ANSWER @ 23,10 SAY "Enter RETURN to continue. " GET ANSWER READ ENDDO RETURN