From 821ed061f8505099e7c751f71b757deeebd86dbd Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 6 May 2012 23:28:08 +0000 Subject: codicefiscaleitaliano git-svn-id: svn://tug.org/texlive/trunk@26234 c570f23f-e606-0410-a88d-b1316a301751 --- .../codicefiscaleitaliano.sty | 56 ++++++++++++++++++---- 1 file changed, 48 insertions(+), 8 deletions(-) (limited to 'Master/texmf-dist/tex/latex/codicefiscaleitaliano') 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 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 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 ; 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 -- cgit v1.2.3