115 lines
3.7 KiB
COBOL
115 lines
3.7 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. insee.
|
|
AUTHOR. OD.
|
|
*---------------------------------------------------------------*
|
|
* PROGRAMME *
|
|
* CONTROLE VALIDITE NUMERO INSEE *
|
|
*---------------------------------------------------------------*
|
|
|
|
ENVIRONMENT DIVISION.
|
|
DATA DIVISION.
|
|
|
|
WORKING-STORAGE SECTION.
|
|
*--------------------------*
|
|
* DEFINITION DES VARIABLES *
|
|
*--------------------------*
|
|
|
|
01 CD-INSEE.
|
|
* Code Homme/Femme, 1 = homme, 2 = femme
|
|
05 CD-SX PICTURE 9 VALUE ZERO.
|
|
* Code année de naissance
|
|
05 CD-NSSNC PICTURE 99 VALUE ZERO.
|
|
* Code mois de naissance
|
|
05 CD-MS-NSSNC PICTURE 99 VALUE ZERO.
|
|
* Code département
|
|
* Enlever les départements non existants, et 2A pour Corse,
|
|
* ainsi que 2B
|
|
05 CD-DPRTMNT PICTURE XX.
|
|
* Code commune
|
|
05 CD-CMMNE PICTURE 999 VALUE ZERO.
|
|
* Code registre
|
|
05 CD-RGSTR PICTURE 999 VALUE ZERO.
|
|
* Clé de contrôle
|
|
05 CL-CTRL PICTURE 99 VALUE ZERO.
|
|
|
|
* ERREURS
|
|
* Booléen permettant de dire s'il y a erreur ou pas
|
|
* Initialisé à 0 pour l'instant
|
|
01 ERR-BLN PICTURE 9 VALUE LOW-VALUE.
|
|
* Nom erreur
|
|
01 ERR-NM PICTURE X(20) VALUE SPACE.
|
|
|
|
PROCEDURE DIVISION.
|
|
* Nom du programme, ici PROGRAMME
|
|
PROGRAMME SECTION.
|
|
|
|
* Demande du numéro
|
|
DEBUT.
|
|
DISPLAY "Tapez votre numéro INSEE : " WITH NO ADVANCING.
|
|
ACCEPT CD-INSEE.
|
|
|
|
* Affichage des valeurs entrées
|
|
AFFICHAGE.
|
|
DISPLAY "Sexe : " CD-SX.
|
|
DISPLAY "Année de naissance : " CD-NSSNC.
|
|
DISPLAY "Mois de naissance : " CD-MS-NSSNC.
|
|
DISPLAY "Département de naissance : " CD-DPRTMNT.
|
|
DISPLAY "Commune : " CD-CMMNE.
|
|
DISPLAY "Code registre : " CD-RGSTR.
|
|
DISPLAY "Clé de contrôle : " CL-CTRL.
|
|
* STOP RUN.
|
|
|
|
* Contrôles de validité
|
|
CONTROLE SECTION.
|
|
|
|
* Contrôle du sexe
|
|
SEXE.
|
|
IF NOT (CD-SX EQUAL TO 1 OR CD-SX EQUAL TO 2) THEN
|
|
MOVE HIGH-VALUE TO ERR-BLN
|
|
MOVE "sexe." TO ERR-NM.
|
|
* Contrôle sur type code sexe
|
|
SEXETYPE.
|
|
IF CD-SX IS NOT NUMERIC THEN
|
|
MOVE HIGH-VALUE TO ERR-BLN
|
|
MOVE "sexe non numérique." TO ERR-NM.
|
|
|
|
* Contrôle sur mois de naissance
|
|
MOISNAISSANCE.
|
|
IF (CD-MS-NSSNC EQUAL TO 0 OR CD-MS-NSSNC GREATER THAN 12)
|
|
THEN
|
|
MOVE HIGH-VALUE TO ERR-BLN
|
|
MOVE "mois de naissance." TO ERR-NM.
|
|
* Contrôle sur type code mois de naissance
|
|
MOISNAISSANCETYPE.
|
|
IF CD-MS-NSSNC IS NOT NUMERIC THEN
|
|
MOVE HIGH-VALUE TO ERR-BLN
|
|
MOVE "année de naissance non numérique." TO ERR-NM.
|
|
|
|
* Contrôle sur département
|
|
DEPARTEMENT.
|
|
IF CD-DPRTMNT EQUAL TO "2A" THEN
|
|
MOVE "19" TO CD-DPRTMNT
|
|
IF CD-DPRTMNT EQUAL TO "2B" THEN
|
|
MOVE "18" TO CD-DPRTMNT
|
|
IF (CD-DPRTMNT EQUAL TO "96" OR CD-DPRTMNT EQUAL TO 0)
|
|
THEN
|
|
MOVE HIGH-VALUE TO ERR-BLN
|
|
MOVE "mauvais département".
|
|
* Contrôle sur type code département
|
|
DEPARTEMENTTYPE.
|
|
IF CD-DPRTMNT IS NOT NUMERIC THEN
|
|
MOVE HIGH-VALUE TO ERR-BLN
|
|
MOVE
|
|
|
|
|
|
* Affichage du résultat
|
|
RESULTAT SECTION.
|
|
|
|
* Affichage de l'erreur
|
|
ERREUR.
|
|
IF ERR-BLN EQUAL TO HIGH-VALUE THEN
|
|
DISPLAY "Erreur sur : " ERR-NM
|
|
ELSE
|
|
DISPLAY "Aucune erreur.".
|
|
STOP RUN.
|