PROC DataBase() PRIVATE Choice SHOWMENU "Import" : "Import data base into Paradox", "Export" : "Export " + TableMain + " table to ASCI files", "ClearBase" : "Empty data base", "MarkAll" : "Mark all records in " + TableMain + " table", "UnmarkAll" : "Unmark all records in " + TableMain + " table", "Pack" : "It may save some space on the disk", "Tune" : "It may improve work of the program" TO Choice SWITCH CASE Choice = "Import" : IF TableMain = "Ref" THEN Import() ELSE MESSAGE "First, press F4 to get to Ref table" SLEEP 1000 ENDIF CASE Choice = "Export" : Export() CASE Choice = "ClearBase" : IF TableMain = "Ref" THEN SHOWMENU "O-o-ops" : "Cancel the operation", "Yes" : "Do empty the data base" TO Choice IF Choice = "Yes" THEN EmptyBase() ENDIF ELSE MESSAGE "First, press F4 to get to Ref table" SLEEP 1000 ENDIF CASE Choice = "MarkAll" : MarkAll() CASE Choice = "UnmarkAll" : UnmarkAll() CASE Choice = "Pack" : IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF DO_IT! Menu {Modify} {Restructure} {Ref} Do_It! MESSAGE "Ref is done" Menu {Modify} {Restructure} {Ath} Do_It! MESSAGE "Ath is done" Menu {Modify} {Restructure} {Ins} Do_It! MESSAGE "Ins is done" Menu {Modify} {Restructure} {Nam} Do_It! MESSAGE "Nam is done" Menu {Modify} {Restructure} {Src} Do_It! MESSAGE "Src is done" Menu {Modify} {Restructure} {Abs} Do_It! MESSAGE "Abs is done" Menu {Modify} {Restructure} {Key} Do_It! MESSAGE "Key is done" MOVETO TableMain FORMKEY COEDITKEY CASE Choice = "Tune" : PAINTCANVAS ATTRIBUTE AtMenu 0, 0, 1, 79 STYLE ATTRIBUTE AtMenu @ 1,0 CLEAR EOL ?? "Enter value for the swap point in Kb (not less than 10)" @ 0,0 CLEAR EOL ?? "Value: " CURSOR NORMAL ACCEPT "S" DEFAULT Swappoint TO Swappoint CURSOR OFF IF NOT Retval THEN RETURN ENDIF IF Swappoint < 10 THEN Swappoint = 10 ENDIF SETSWAP Swappoint*1000 OTHERWISE : RETURN ENDSWITCH ENDPROC PROC Import() PRIVATE Choice, NameDB, i, j IF NOT ISEMPTY("Ref") THEN CLEAR SHOWMENU "Overwrite" : "Overwrite the old records", "Append" : "Append new records to the old ones" TO Choice SWITCH CASE Choice = "Overwrite" : EmptyBase() CASE Choice = "Append" : OTHERWISE : RETURN ENDSWITCH ENDIF CURSOR NORMAL NameDB = GetFile("*.ref", "Name:", "Enter base name of ASCII files (without extension) or directory", Dir, TRUE) CURSOR OFF IF NameDB = "" THEN RETURN ENDIF DO_IT! Dir = GetDir(NameDB) FOR i FROM 1 TO 7 Choice = ImportFile(i) IF Choice THEN FOR j FROM i TO 1 STEP -1 UndoImport(j) ENDFOR QUITLOOP ENDIF ENDFOR MOVETO "Ref" IMAGERIGHTS COEDITKEY FORMKEY MOVETO "Ath" IMAGERIGHTS READONLY MOVETO "Ins" IMAGERIGHTS READONLY MOVETO "Nam" IMAGERIGHTS READONLY MOVETO "Src" IMAGERIGHTS READONLY MOVETO "Abs" IMAGERIGHTS READONLY MOVETO "Key" IMAGERIGHTS READONLY MOVETO TableMain IMAGERIGHTS READONLY ENDPROC PROC EmptyBase() IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF DO_IT! IF ISTABLE("Answer") THEN DELETE "Answer" ENDIF EMPTY "Ref" MESSAGE "Ref is empty" EMPTY "Ath" MESSAGE "Ans is empty" EMPTY "Ins" MESSAGE "Ins is empty" EMPTY "Nam" MESSAGE "Nam is empty" EMPTY "Src" MESSAGE "Src is empty" EMPTY "Abs" MESSAGE "Abs is empty" EMPTY "Key" MESSAGE "Key is empty" MOVETO "Ref" IMAGERIGHTS COEDITKEY FORMKEY IMAGERIGHTS READONLY itn = 1 ifn = 1 ENDPROC PROC ImportFile(i) MENU {Tools} {ExportImport} {Import} {Ascii} {AppendDelimited} SELECT NameDB + "." + TableName[i] SELECT TableName[i] {NewEntries} MESSAGE TableName[i] + " is done" IF ISTABLE("Problems") THEN MESSAGE "Something wrong with " + NameDB + "." + LOWER(TableName[i]) SLEEP 1500 MOVETO "Problems" WAIT TABLE PROMPT "See what your problems are and press Esc", "After that quit R-Cite, correct the file " + NameDB + "." + LOWER(TableName[i]) + " and try again" UNTIL "Esc" DELETE "Problems" RETURN TRUE ENDIF IF ISTABLE("Keyviol") THEN MESSAGE "Key violation in the Index field while appending to " + TableName[i] SLEEP 1500 MOVETO "Keyviol" WAIT TABLE PROMPT "See what records already exist and press Esc", "After that quit R-Cite, correct the file " + NameDB + "." + LOWER(TableName[i]) + " and try again" UNTIL "Esc" RETURN TRUE ENDIF RETURN FALSE ENDPROC PROC UndoImport(i) CREATE "Temp" LIKE TableName[i] MESSAGE "Recovering " + TableName[i] MENU {Tools} {ExportImport} {Import} {Ascii} {AppendDelimited} SELECT NameDB + "." + TableName[i] SELECT "Temp" {NewEntries} IF ISTABLE("Keyviol") THEN SUBTRACT "Keyviol" "Temp" DELETE "Keyviol" ENDIF SUBTRACT "Temp" TableName[i] DELETE "Temp" ENDPROC PROC GetDir(NameDB) PRIVATE Dir Dir = "" IF SEARCH(":", NameDB) > 0 THEN Dir = Dir + SUBSTR(NameDB, 1, SEARCH(":", NameDB)) NameDB = SUBSTR(NameDB, SEARCH(":", NameDB) + 1, LEN(NameDB) - SEARCH(":", NameDB)) ENDIF WHILE SEARCH("\\", NameDB) > 0 Dir = Dir + SUBSTR(NameDB, 1, SEARCH("\\", NameDB)) NameDB = SUBSTR(NameDB, SEARCH("\\", NameDB) + 1, LEN(NameDB) - SEARCH("\\", NameDB)) ENDWHILE RETURN Dir ENDPROC PROC Export() PRIVATE Choice, Line, NameDB IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF CURSOR NORMAL NameDB = GetFile("*.ref", "Name:", "Enter base name of ASCII files (without extension) or directory", Dir, FALSE) CURSOR OFF IF NameDB = "" THEN RETURN ENDIF IF ISFILE (NameDB + ".ref") THEN SHOWMENU "Overwrite" : "Overwrite ASCII files with base name " + NameDB, "Ooops" : "Cancel operation" TO Choice SWITCH CASE Choice = "Esc" : RETURN CASE Choice = "Ooops" : RETURN CASE Choice = "Overwrite" : RUN "del " + NameDB + ".*" ENDSWITCH ENDIF Dir = GetDir(NameDB) DO_IT! IF TableMain = "Ref" THEN ExportTbl("Ref") ExportTbl("Ath") ExportTbl("Ins") ExportTbl("Nam") ExportTbl("Src") ExportTbl("Abs") ExportTbl("Key") ELSE MOVETO TableMain PRINT FILE NameDB + ".ref" "" PRINT FILE NameDB + ".ath" "" PRINT FILE NameDB + ".ins" "" PRINT FILE NameDB + ".nam" "" PRINT FILE NameDB + ".src" "" PRINT FILE NameDB + ".abs" "" PRINT FILE NameDB + ".key" "" SCAN Line = "\"" + [Index] + "\",\"" + [Year] + "\",\"" + STRVAL([Flag]) + "\"\n" PRINT FILE NameDB + ".ref" Line ExportTable("Ath", "Authors") ExportTable("Ins", "Institute") ExportTable("Nam", "Name") ExportTable("Src", "Source") ExportTable("Abs", "Abstract") ExportTable("Key", "Keys") MOVETO TableMain IF MOD(RECNO(), 5) = 0 THEN MESSAGE "Processing record " + STRVAL(RECNO()) ENDIF ENDSCAN HOME ENDIF COEDITKEY ENDPROC PROC ExportTbl(Name) MENU {Tools} {ExportImport} {Export} {Ascii} {Delimited} SELECT Name SELECT NameDB + "." + Name MESSAGE Name + " is done" ENDPROC PROC ExportTable(Name, FieldN) PRIVATE i MOVETO Name IF NIMAGERECORDS() > 0 THEN MOVETO FIELD FieldN HOME FOR i FROM 1 TO NIMAGERECORDS() Line = "\"" + [Index] + "\",\"" + STRVAL([I]) + "\",\"" + [] + "\"\n" PRINT FILE NameDB + "." + Name Line IF NOT ATLAST() THEN DOWN ENDIF ENDFOR ENDIF ENDPROC PROC MarkAll() IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF DO_IT! FORMKEY COEDITKEY MOVETO [Flag] HOME IMAGERIGHTS SCAN FOR ISBLANK([]) [] = 1 IF MOD(RECNO(),10) = 0 THEN MESSAGE "Processing record " + STRVAL(RECNO()) ENDIF ENDSCAN IMAGERIGHTS READONLY HOME UNLOCKRECORD FORMKEY ENDPROC PROC UnmarkAll() IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF DO_IT! FORMKEY COEDITKEY MOVETO [Flag] HOME IMAGERIGHTS SCAN FOR NOT ISBLANK([]) [] = BLANKNUM() IF MOD(RECNO(),10) = 0 THEN MESSAGE "Processing record " + STRVAL(RECNO()) ENDIF ENDSCAN IMAGERIGHTS READONLY HOME UNLOCKRECORD FORMKEY ENDPROC