Created
August 19, 2015 11:38
-
-
Save ibmiiste/ce16f927b8e18fbe2b72 to your computer and use it in GitHub Desktop.
Calcul et contrôle de la clef NIR( Numéro de sécurité sociale)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*®------------------------------------------------------------®* * Nom de la sauvegarde | |
* Nom de la sauvegarde :S000017742 * /*®------------------------- | |
*®------------------------------------------------------------®* | |
*PREMUNI Date :15/07/09 * | |
* Objet : NIR Corse+Annul rattach * | |
* JH01 : Prise en compte des départements 2A / 2B pour le * | |
* calcul de la clé du NIR * | |
*®------------------------------------------------------------®* | |
H | |
**************************************************************** | |
* CONTROLE DU NUMERO DE SECURITE SOCIALE | |
* ====================================== | |
* | |
* DES BENEFICIAIRES | |
* ================= | |
* L.F. 08/90 | |
**************************************************************** | |
* Indicateur | |
* ----------- | |
* | |
* LR : FIN FICHIER | |
***************************************************************** | |
* PARAMETRES TRANSMIS PAR PGM | |
* --------------------------- | |
* | |
* WSEC15 ===> N° DE SECURITE SOCIALE DU BENEFICIAIRE | |
* AVEC LA CLEF (BENSEC) | |
* | |
* ERR ===> 0 = BENSEC JUSTE | |
* ERR ===> 1 = BENSEC ERRONE | |
D* | |
066 D DS | |
D WNSS15 1 15 | |
jh01D dsdep 6 7 | |
jh01 ** WZON01 1 13 0 | |
jh01D WZON13 1 13 | |
045 D WCLESS 14 15 0 | |
jh01D wNumStr s 10a inz('0123456789') | |
jh01D wNumsec s 13s 0 | |
jh01D wcle s 2s 0 | |
jh01D pcle s 2 | |
396 C*----------------------------------------------------* | |
397 C*--CONTROLE DU N° DE SECURITE SOCIALE ---------* | |
396 C*----------------------------------------------------* | |
398 C* | |
C *ENTRY PLIST | |
C PARM WSEC15 15 | |
C PARM ERR 1 | |
* | |
*-------------------------------------------- | |
* DEBUT DU MODULE DE CONTROLE | |
*-------------------------------------------- | |
* | |
/free | |
wnss15 = wsec15; | |
// Test de numéricité | |
if %check( wNumStr : wzon13 ) > 0; | |
select; | |
// Cas de la Corse du Sud | |
when dsDep = '2A'; | |
dsDep = '19'; | |
// Cas de la Haute Corse | |
when dsDep = '2B'; | |
dsDep = '18'; | |
// Cas d'erreur | |
other; | |
pCle = 'ER'; | |
exsr srFinPgm; | |
endsl; | |
endif; | |
// Calcul de la clé | |
wNumSec = %dec( wzon13 : 13 : 0 ); | |
wCle = 97 - ( %rem( wNumSec : 97 ) ); | |
/end-free | |
C* | |
jh01c move wcle pcle | |
jh01 ** MOVE WSEC15 WNSS15 | |
jh01 ** WZON01 DIV 97 WZON02 13 0 | |
jh01 ** WZON02 MULT 97 WZON02 | |
jh01 ** WZON01 SUB WZON02 WZON03 2 0 | |
jh01 ** 97 SUB WZON03 WWNCTR 2 0 | |
396 C*----------------------------------------------------* | |
397 C*-- VERIFICATION ENTRE CLEF CALCULEE ET CLEF TRANSMISE | |
396 C*----------------------------------------------------* | |
C* | |
C WCLESS IFNE 0 B1---------+ | |
jh01 ** WWNCTR IFEQ WCLESS B2-------+ | | |
jh01C wcle IFEQ WCLESS B2-------+ | | |
C MOVE '0' ERR | | | |
C ELSE X2-------| | | |
C MOVE '1' ERR | | | |
C END E2-------+ | | |
C ELSE X1---------| | |
jh01 ** MOVE WWNCTR WSEC15 | | |
jh01C MOVE pcle WSEC15 | | |
C MOVE '0' ERR | | |
C ENDIF E1---------+ | |
C Return | |
//----------------------------------------------------------* | |
// Fin du programme * | |
//----------------------------------------------------------* | |
/free | |
begsr srFinPgm; | |
return; | |
endsr; | |
/end-free |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment