(* Reading names to be added or removed from MO names list *) maintainReadAdd := Module[{file, names, names1, names2, name}, namesList = namesMO; (* adding *) file = fileAdd = FileNameJoin[{dirwork, "addnames.txt"}]; Print["----- Reading additional names from file ", file]; checkfile[file]; names = Import[file, "Lines"]; names = StringReplace[#, "#" ~~ ___ -> ""] & /@ names; names = stringtrim /@ names; names = Select[names, (# =!= "") &]; names1 = Select[names, StringMatchQ[#, matchName] &]; names2 = Complement[names, names1]; If[names2 =!= {}, Print["Warning: some names don't match neither ", matchName1, " nor ", matchName2, ": ", names2]]; names = names1; Do[ name = names[[iname]]; If[MemberQ[Drop[names, {iname}], name], Print["Warning: duplicate name: ", name]], {iname, Length[names]}]; names = Union[names]; names1 = Intersection[namesList, names]; If[names1 =!= {}, Print["Warning: already existing names: ", names1]]; namesAdd = Complement[names, names1]; Print[Length[namesAdd], " names to be added to MO list: ", Short[namesAdd]]; namesList = Union[namesList, namesAdd]; (* removing *) file = fileRemove = FileNameJoin[{dirwork, "removenames.txt"}]; Print["----- Excluding names from file ", file]; checkfile[file]; names = Import[file, "Lines"]; names = StringReplace[#, "#" ~~ ___ -> ""] & /@ names; names = stringtrim /@ names; names = Select[names, (# =!= "") &]; names1 = Select[names, StringMatchQ[#, matchName] &]; names2 = Complement[names, names1]; If[names2 =!= {}, Print["Warning: some names don't match neither ", matchName1, " nor ", matchName2, ": ", names2]]; names = names1; Do[ name = names[[iname]]; If[MemberQ[Drop[names, {iname}], name], Print["Warning: duplicate name: ", name]], {iname, Length[names]}]; names = Union[names]; names1 = Complement[names, namesList]; If[names1 =!= {}, Print["Warning: there are names for exclusion that are not present in MO list: ", names1]]; namesRemove = Complement[names, names1]; Print[Length[namesRemove], " names to be excluded from MO list: ", Short[namesRemove, 22]]; (* Length[names1] names2=Select[namesList,(!StringFreeQ[#,names1])&] Length[names2] *) namesList = Complement[namesList, namesRemove]; ];