*UTIL.CMD - File utility program * 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 STORE FILENAME TO FNAME STORE FILE:DESC TO FDESC STORE INDEXES TO ALLNDX SELECT SECONDARY USE &FNAME DO WHILE T ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF STORE "Utility 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:" @ 9,10 SAY " COPY - Copy file to another name" @ 10,10 SAY " REPL - Replace all the values of a field" @ 11,10 SAY " DELE - Delete records for a given condition" @ 12,10 SAY " RECA - Recall records for a given condition" @ 14,10 SAY "Enter your choice or just a RETURN to quit " GET ANSWER PICTURE "!!!!" READ IF ANSWER = " " RETURN ENDIF IF ANSWER = "COPY" .OR. ANSWER = "REPL" .OR. ANSWER = "DELE" .OR. ANSWER = "RECA" ELSE @ 21,10 SAY ANSWER + " is not a valid entry, please try again." STORE " " TO ANSWER @ 22,10 SAY "Enter RETURN to continue. " GET ANSWER READ LOOP ENDIF IF ANSWER = "COPY" STORE " " TO NEWFILE STORE " " TO EXT @ 16,10 SAY "Enter new filename to copy to " GET NEWFILE PICTURE "!!!!!!!!" @ 17,10 SAY "Enter extension for new file " GET EXT PICTURE "!!!" @ 18,10 SAY "An extension of DBF will result in a dBASE file structure, anything" @ 19,10 SAY "else will be a structure usable by a word processor for mailing" @ 20,10 SAY "letters and labels. Enter two RETURNs to quit." READ IF NEWFILE = " " LOOP ENDIF @ 16,10 @ 17,10 @ 18,10 @ 19,10 @ 20,10 IF EXT = "DBF" STORE " TO " + TRIM(NEWFILE) TO DEST ELSE STORE " TO " + TRIM(NEWFILE) + "." + EXT + " SDF DELIMITED WITH , " TO DEST ENDIF ENDIF IF ANSWER = "REPL" STORE F TO CORRECT DO WHILE .NOT. CORRECT STORE " " TO FIELD STORE " " TO VALUE @ 16,10 SAY "Enter field to be replaced " GET FIELD PICTURE "!!!!!!!!!!" @ 17,10 SAY "Enter new value(character fields within quotes) " GET VALUE @ 18,10 SAY "Enter two RETURNs in order to quit" READ IF FIELD = " " STORE T TO CORRECT LOOP ENDIF STORE TRIM(FIELD) + " = " + TRIM(VALUE) TO CRIT IF 0 = TEST(&CRIT) @ 19,10 SAY "I'm sorry, but there is something wrong with the following criteria." @ 20,10 SAY "Field " GET FIELD @ 20,30 SAY "Value " GET VALUE CLEAR GETS ELSE STORE T TO CORRECT @ 16,10 @ 17,10 @ 18,10 @ 19,10 @ 20,10 ENDIF ENDDO IF FIELD = " " LOOP ENDIF STORE TRIM(FIELD) + " WITH " + TRIM(VALUE) TO REPLMENT ENDIF STORE F TO CORRECT DO WHILE .NOT. CORRECT STORE " " TO CRITERIA @ 16,10 SAY "Enter selection criteria below or RETURN to select all records." @ 17,10 GET CRITERIA READ STORE TRIM(CRITERIA) TO CRIT IF CRIT = " " STORE T TO CORRECT ELSE IF 0 = TEST(&CRIT) STORE F TO CORRECT ELSE STORE T TO CORRECT ENDIF ENDIF IF CORRECT @ 16,10 @ 17,10 @ 19,10 @ 20,10 ELSE @ 19,10 SAY "I'm sorry, but there is something wrong with the following criteria." @ 20,10 GET CRITERIA CLEAR GETS ENDIF ENDDO IF CRIT = " " STORE "ALL " TO SELECTION ELSE STORE " FOR " + CRIT TO SELECTION ENDIF @ 16,0 IF ANSWER = "COPY" SET INDEX TO DISP "Now copying records" OFF SET TALK ON COPY &DEST &SELECTION SET TALK OFF DISP "Copy complete" OFF ENDIF IF ANSWER = "REPL" SET INDEX TO &ALLNDX DISP "Now replacing values" OFF SET TALK ON REPL &REPLMENT &SELECTION SET TALK OFF DISP "Replace complete" OFF ENDIF IF ANSWER = "DELE" SET INDEX TO DISP "Now deleting records " OFF SET TALK ON DELE &SELECTION SET TALK OFF DISP "Delete complete" OFF ENDIF IF ANSWER = "RECA" SET INDEX TO DISP "Now recalling records " OFF SET TALK ON RECALL &SELECTION SET TALK OFF DISP "Recall complete" OFF ENDIF STORE " " TO ANSWER WAIT ENDDO RETURN