As note, starting from the answer of @AdamLiter, you need to consider the \moderncvstyle used. For example, by using \moderncvstyle{casual}, reading inside the file moderncvstylecasual.sty (located in '/texmf-dist/tex/latex/moderncv', considering TeXlive 2019), you will see \moderncvbody{1} that means moderncvbodyi.sty. So, inside this last one, you can take the definition of \cventry, that in this case is:
\renewcommand*{\cventry}[7][.25em]{%
\cvitem[#1]{#2}{%
{\bfseries#3}%
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
\ifthenelse{\equal{#5}{}}{}{, #5}%
\ifthenelse{\equal{#6}{}}{}{, #6}%
.\strut%
\ifx&%
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
In your tex file preamble you can now copy it, changing .\strut% with \strut%, and I suggest you to give another name to this new command (for example \cventrynofinaldotcasual) to not overwrite the original one but to use this custom \cventry only when you need it, like so:
\newcommand*{\cventrynofinaldotcasual}[7][.25em]{% ROW CHANGED: NOTE '\newcommand', NOT '\renewcommand'!
\cvitem[#1]{#2}{%
{\bfseries#3}%
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
\ifthenelse{\equal{#5}{}}{}{, #5}%
\ifthenelse{\equal{#6}{}}{}{, #6}%
\strut% ROW CHANGED!
\ifx&%
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
Now you can use the new command in the body of your tex file like so:
\cventrynofinaldotcasual[spacing]{years}{degree/job title}{institution/employer}{localization}{optional: grade/...}{optional: comment/job description} % OUTPUT WITHOUT FINAL DOT!
moderncvclass requires some missing arguments in order to compile. Can you please convert the code you have posted in your question into an MWE? It will make it much easier to help you since we can then just copy and paste your code into our editors. – Adam Liter Apr 28 '15 at 19:53