Skip to content

Instantly share code, notes, and snippets.

@ibmiiste
Created August 19, 2015 11:38
Show Gist options
  • Save ibmiiste/ce16f927b8e18fbe2b72 to your computer and use it in GitHub Desktop.
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)
*®------------------------------------------------------------®* * 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