summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/codicefiscaleitaliano
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-05-06 23:28:08 +0000
committerKarl Berry <karl@freefriends.org>2012-05-06 23:28:08 +0000
commit821ed061f8505099e7c751f71b757deeebd86dbd (patch)
tree727137f487c7bfda7ed759b542b0c17799cf3ef5 /Master/texmf-dist/tex/latex/codicefiscaleitaliano
parent8a3c9c21bbf647bc520eacd604fd4373a6e1c2e2 (diff)
codicefiscaleitaliano
git-svn-id: svn://tug.org/texlive/trunk@26234 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/codicefiscaleitaliano')
-rw-r--r--Master/texmf-dist/tex/latex/codicefiscaleitaliano/codicefiscaleitaliano.sty56
1 files changed, 48 insertions, 8 deletions
diff --git a/Master/texmf-dist/tex/latex/codicefiscaleitaliano/codicefiscaleitaliano.sty b/Master/texmf-dist/tex/latex/codicefiscaleitaliano/codicefiscaleitaliano.sty
index 756f756b555..6d59f18a97f 100644
--- a/Master/texmf-dist/tex/latex/codicefiscaleitaliano/codicefiscaleitaliano.sty
+++ b/Master/texmf-dist/tex/latex/codicefiscaleitaliano/codicefiscaleitaliano.sty
@@ -18,8 +18,11 @@
%%
\NeedsTeXFormat{LaTeX2e}[2011/06/20]
\ProvidesPackage{codicefiscaleitaliano}%
- [2012/05/03 v.1.1 Controlla il codice fiscale italiano]
-\def\getCFletter#1#2!{\Letter=`#1\def\CFisc{#2}}
+ [2012/05/06 v.1.2 Controlla il codice fiscale italiano]
+\newif\ifcontrollo \controllotrue
+\newif\ifstampacodice \stampacodicefalse
+\def\getCFletter#1#2!{\ifx#1\space\getCFLetter#2!\else
+\Letter=`#1\def\CFisc{#2}\fi}
\def\getOddValore{%
\ifnum\Letter<\A
\valore=\expandafter\ifcase\numexpr\Letter-\zero\relax
@@ -37,7 +40,10 @@
\else
\valore=\numexpr\Letter-\A\relax
\fi}
-\newcommand\codicefiscaleitaliano[1]{\edef\CFisc{#1}%
+\newcommand*\codicefiscaleitaliano{%
+\@ifstar{\c@dfiscit[\stampacodicetrue]}{\c@dfiscit}}
+\newcommand*\c@dfiscit[2][\stampacodicefalse]{#1\edef\CFisc{#2}%
+\let\codfisc\CFisc
\begingroup
\countdef\cifra=256 \cifra=\z@
\countdef\A=258\A=`\A
@@ -46,6 +52,21 @@
\countdef\valore=264
\countdef\somma=266 \somma=\z@
\@whilenum\cifra<16\do{\advance\cifra\@ne
+\ifx\CFisc\@empty
+\cifra=16\controllofalse
+\PackageError{codicefiscaleitaliano}{%
+\MessageBreak
+**************************************
+\MessageBreak
+Il codice fiscale #2\MessageBreak
+non ha 16 caratteri.
+\MessageBreak
+L'esecuzione della verifica viene\MessageBreak
+interrotta.
+\MessageBreak
+**************************************
+}{Premere <invio> per continuare}%
+\else
\expandafter\getCFletter\CFisc!\relax
\ifodd\cifra
\getOddValore%
@@ -53,7 +74,24 @@
\getEvenValore%
\fi
\advance\somma\valore
-}\advance\somma-\valore
+\fi}\unless\ifx\CFisc\@empty\controllofalse
+\PackageError{codicefiscaleitaliano}{%
+\MessageBreak
+**************************************
+\MessageBreak
+Il codice immesso #2\MessageBreak
+contiene piu' di 16 caratteri.
+\MessageBreak
+L'esecuzione della verifica viene\MessageBreak
+interrotta.
+\MessageBreak
+**************************************
+}{%
+Premere <invio> per continuare.
+}%
+\else
+\ifcontrollo
+\advance\somma-\valore
\Letter\somma
\divide\Letter by 26\relax
\somma=\numexpr\somma - 26*\Letter\relax
@@ -61,15 +99,17 @@
\PackageInfo{codicefiscaleitaliano}{\MessageBreak
Codice fiscale OK}
\else
+\controllofalse
\PackageError{codicefiscaleitaliano}{\MessageBreak
-********************\MessageBreak
-Codice fiscale #1 errato\MessageBreak
-********************}{%
+***************************************\MessageBreak
+Codice fiscale #2 errato\MessageBreak
+***************************************}{%
Premi S oppure Q oppure <invio>; il file
verra' elaborato lo stesso ma il codice
fiscale deve venire ricontrollato!}
\fi
-\endgroup}
+\fi
+\fi\ifcontrollo\ifstampacodice\codfisc\fi\fi\endgroup}
%%
%% Copyright 2012 Claudio Beccari