PROC Change_index() PRIVATE Loc, Yr, Auth, Page, k, l CLEARALL COEDIT "Ref" FORMKEY SCAN FOR ISBLANK([Flag]) IF MATCH([], "..+..") THEN Loc = "+" ELSE Loc = "-" ENDIF IF LEN([Year]) = 4 THEN Yr = SUBSTR([Year], 3, 2) ELSE Yr = "__" ENDIF IF MATCH([Ath->Authors], ".. ", Auth) = FALSE THEN Auth = [Ath->Authors] ENDIF k = MATCH(Auth, "..-..", Auth, k) IF LEN(Auth) < 3 THEN Auth = Auth + "___" ENDIF Auth = SUBSTR(Auth, 1, 3) MOVETO "Src" MOVETO [Source] END IF MATCH([], "..;..)..", k, l, Page) = FALSE THEN IF MATCH([], "..; .. ..", k, l, Page) = FALSE THEN IF MATCH([], "..;.. ..", k, l, Page) = FALSE THEN Page = "___" ENDIF ENDIF ENDIF MOVETO "Ref" k = MATCH(Page, "..-..", Page, k) Page = RemoveSp(Page) IF LEN(Page) < 3 THEN Page = "___" + Page ENDIF Page = SUBSTR(Page, LEN(Page)-1, 2) l = Yr + Auth + Page + Loc [] = l k = 1 WHILE TRUE Loc = [] UNLOCKRECORD IF RECORDSTATUS("Locked") = FALSE AND RECORDSTATUS("New") = FALSE THEN QUITLOOP ENDIF [] = l + STRVAL(k) k = k + 1 ENDWHILE LOCATE Loc [Flag] = 1 RefreshCanvas() IF MOD(RECNO(), 5) = 0 THEN MESSAGE "Processing a record " + STRVAL(RECNO()) ENDIF ENDSCAN DO_IT! ENDPROC PROC Anal_Authors(Old) PRIVATE Author, Initials, Word, Sep, k IF MATCH(Old, "..-..") THEN New = Old Return FALSE ENDIF New = "" Old = RemoveSp(Old) WHILE Old <> "" Old = RemoveSp(Old) Author = "" Initials = "" IF MATCH(Old, ".. ..,..", Author, Initials, Old) = FALSE THEN IF MATCH(Old, ".. .. ..", Author, Initials, Old) = FALSE THEN IF MATCH(Old, ".. ..", Author, Initials) THEN Old = "" ELSE Author = Old Old = "" ENDIF ENDIF ENDIF IF MATCH(Author, "..\...") THEN Word = Author Author = Initials Initials = Word ENDIF Sep = FALSE Word = "" FOR i FROM 1 TO LEN(Initials) k = SUBSTR(Initials, i, 1) IF Sep = FALSE THEN IF k <> " " THEN Word = Word + k Sep = True ENDIF ELSE IF k = "." THEN Sep = FALSE ELSE New = New + Author + " " + Initials + "," + Old RETURN FALSE ENDIF ENDIF ENDFOR Author = RemoveSp(Author) IF Author = "" THEN New = New + Author + " " + Initials + "," + Old RETURN FALSE ENDIF IF Initials <> "" THEN New = New + Author + "-" + Word + " " ELSE New = New + Author + " " ENDIF ENDWHILE RETURN TRUE ENDPROC PROC Change_authors() ; changes from Author A.B. to Author-AB PRIVATE Old, New, Okay CLEARALL COEDIT "Ref" FORMKEY SCAN FOR ISBLANK([Flag]) MOVETO "Ath" MOVETO [Authors] ; RefreshCanvas() ; SLEEP 1000 HOME Old = "" FOR i FROM 1 TO NIMAGERECORDS() Old = Old + [] + " " DOWN ENDFOR HOME WHILE NOT ATLAST() DEL ENDWHILE DEL Okay = Anal_Authors(Old) New = RemoveSp(New) [I] = 0 Pack(New) IF OKAY = FALSE THEN MESSAGE "Something wrong" SLEEP 500 ENDIF IF Okay = FALSE THEN debug ENDIF MOVETO "Ref" IF Okay THEN [Flag] = 1 ENDIF IF MOD(RECNO(), 5) = 0 THEN MESSAGE "Processing a record " + STRVAL(RECNO()) ENDIF ENDSCAN DO_IT! ENDPROC Change_index() ;Change_authors()