VERS='6.06.014'

echo "Mise a jour de la base de donnees pour Version $VERS - Ajout de la table pays"

#-- ============================================================
#-- Script de création et chargement de la table PAYS (Version 2)
#-- Base de données : Informix SE 7
#-- Norme : ISO 3166-1 + ITU-T E.164 (indicatifs téléphoniques)
#-- Date : 2025-11-02
#-- ============================================================

# Le heredoc avec <<'EOF' assure que les apostrophes sont déjà traitées littéralement
# et ne posent pas de problème !
# Création du fichier pays.unl dans /tmp
cat > /tmp/pays.unl <<'EOF'
AD|AND|020|376|Andorre|Andorra
AE|ARE|784|971|Émirats arabes unis|United Arab Emirates
AF|AFG|004|93|Afghanistan|Afghanistan
AG|ATG|028|1-268|Antigua-et-Barbuda|Antigua and Barbuda
AI|AIA|660|1-264|Anguilla|Anguilla
AL|ALB|008|355|Albanie|Albania
AM|ARM|051|374|Arménie|Armenia
AO|AGO|024|244|Angola|Angola
AQ|ATA|010||Antarctique|Antarctica
AR|ARG|032|54|Argentine|Argentina
AS|ASM|016|1-684|Samoa américaines|American Samoa
AT|AUT|040|43|Autriche|Austria
AU|AUS|036|61|Australie|Australia
AW|ABW|533|297|Aruba|Aruba
AX|ALA|248|358-18|Îles Åland|Aland Islands
AZ|AZE|031|994|Azerbaïdjan|Azerbaijan
BA|BIH|070|387|Bosnie-Herzégovine|Bosnia and Herzegovina
BB|BRB|052|1-246|Barbade|Barbados
BD|BGD|050|880|Bangladesh|Bangladesh
BE|BEL|056|32|Belgique|Belgium
BF|BFA|854|226|Burkina Faso|Burkina Faso
BG|BGR|100|359|Bulgarie|Bulgaria
BH|BHR|048|973|Bahreïn|Bahrain
BI|BDI|108|257|Burundi|Burundi
BJ|BEN|204|229|Bénin|Benin
BL|BLM|652|590|Saint-Barthélemy|Saint Barthelemy
BM|BMU|060|1-441|Bermudes|Bermuda
BN|BRN|096|673|Brunei|Brunei
BO|BOL|068|591|Bolivie|Bolivia
BQ|BES|535|599|Pays-Bas caribéens|Caribbean Netherlands
BR|BRA|076|55|Brésil|Brazil
BS|BHS|044|1-242|Bahamas|Bahamas
BT|BTN|064|975|Bhoutan|Bhutan
BV|BVT|074||Île Bouvet|Bouvet Island
BW|BWA|072|267|Botswana|Botswana
BY|BLR|112|375|Biélorussie|Belarus
BZ|BLZ|084|501|Belize|Belize
CA|CAN|124|1|Canada|Canada
CC|CCK|166|61|Îles Cocos|Cocos Islands
CD|COD|180|243|Congo (RDC)|Congo (DRC)
CF|CAF|140|236|République centrafricaine|Central African Republic
CG|COG|178|242|Congo|Congo
CH|CHE|756|41|Suisse|Switzerland
CI|CIV|384|225|Côte d'Ivoire|Ivory Coast
CK|COK|184|682|Îles Cook|Cook Islands
CL|CHL|152|56|Chili|Chile
CM|CMR|120|237|Cameroun|Cameroon
CN|CHN|156|86|Chine|China
CO|COL|170|57|Colombie|Colombia
CR|CRI|188|506|Costa Rica|Costa Rica
CU|CUB|192|53|Cuba|Cuba
CV|CPV|132|238|Cap-Vert|Cape Verde
CW|CUW|531|599|Curaçao|Curacao
CX|CXR|162|61|Île Christmas|Christmas Island
CY|CYP|196|357|Chypre|Cyprus
CZ|CZE|203|420|Tchéquie|Czechia
DE|DEU|276|49|Allemagne|Germany
DJ|DJI|262|253|Djibouti|Djibouti
DK|DNK|208|45|Danemark|Denmark
DM|DMA|212|1-767|Dominique|Dominica
DO|DOM|214|1-809|République dominicaine|Dominican Republic
DZ|DZA|012|213|Algérie|Algeria
EC|ECU|218|593|Équateur|Ecuador
EE|EST|233|372|Estonie|Estonia
EG|EGY|818|20|Égypte|Egypt
EH|ESH|732|212|Sahara occidental|Western Sahara
ER|ERI|232|291|Érythrée|Eritrea
ES|ESP|724|34|Espagne|Spain
ET|ETH|231|251|Éthiopie|Ethiopia
FI|FIN|246|358|Finlande|Finland
FJ|FJI|242|679|Fidji|Fiji
FK|FLK|238|500|Îles Malouines|Falkland Islands
FM|FSM|583|691|Micronésie|Micronesia
FO|FRO|234|298|Îles Féroé|Faroe Islands
FR|FRA|250|33|France|France
GA|GAB|266|241|Gabon|Gabon
GB|GBR|826|44|Royaume-Uni|United Kingdom
GD|GRD|308|1-473|Grenade|Grenada
GE|GEO|268|995|Géorgie|Georgia
GF|GUF|254|594|Guyane française|French Guiana
GG|GGY|831|44-1481|Guernesey|Guernsey
GH|GHA|288|233|Ghana|Ghana
GI|GIB|292|350|Gibraltar|Gibraltar
GL|GRL|304|299|Groenland|Greenland
GM|GMB|270|220|Gambie|Gambia
GN|GIN|324|224|Guinée|Guinea
GP|GLP|312|590|Guadeloupe|Guadeloupe
GQ|GNQ|226|240|Guinée équatoriale|Equatorial Guinea
GR|GRC|300|30|Grèce|Greece
GS|SGS|239||Géorgie du Sud|South Georgia
GT|GTM|320|502|Guatemala|Guatemala
GU|GUM|316|1-671|Guam|Guam
GW|GNB|624|245|Guinée-Bissau|Guinea-Bissau
GY|GUY|328|592|Guyana|Guyana
HK|HKG|344|852|Hong Kong|Hong Kong
HM|HMD|334||Îles Heard-et-MacDonald|Heard Island and McDonald Islands
HN|HND|340|504|Honduras|Honduras
HR|HRV|191|385|Croatie|Croatia
HT|HTI|332|509|Haïti|Haiti
HU|HUN|348|36|Hongrie|Hungary
ID|IDN|360|62|Indonésie|Indonesia
IE|IRL|372|353|Irlande|Ireland
IL|ISR|376|972|Israël|Israel
IM|IMN|833|44-1624|Île de Man|Isle of Man
IN|IND|356|91|Inde|India
IO|IOT|086|246|Territoire britannique de l'océan Indien|British Indian Ocean Territory
IQ|IRQ|368|964|Irak|Iraq
IR|IRN|364|98|Iran|Iran
IS|ISL|352|354|Islande|Iceland
IT|ITA|380|39|Italie|Italy
JE|JEY|832|44-1534|Jersey|Jersey
JM|JAM|388|1-876|Jamaïque|Jamaica
JO|JOR|400|962|Jordanie|Jordan
JP|JPN|392|81|Japon|Japan
KE|KEN|404|254|Kenya|Kenya
KG|KGZ|417|996|Kirghizistan|Kyrgyzstan
KH|KHM|116|855|Cambodge|Cambodia
KI|KIR|296|686|Kiribati|Kiribati
KM|COM|174|269|Comores|Comoros
KN|KNA|659|1-869|Saint-Christophe-et-Niévès|Saint Kitts and Nevis
KP|PRK|408|850|Corée du Nord|North Korea
KR|KOR|410|82|Corée du Sud|South Korea
KW|KWT|414|965|Koweït|Kuwait
KY|CYM|136|1-345|Îles Caïmans|Cayman Islands
KZ|KAZ|398|7|Kazakhstan|Kazakhstan
LA|LAO|418|856|Laos|Laos
LB|LBN|422|961|Liban|Lebanon
LC|LCA|662|1-758|Sainte-Lucie|Saint Lucia
LI|LIE|438|423|Liechtenstein|Liechtenstein
LK|LKA|144|94|Sri Lanka|Sri Lanka
LR|LBR|430|231|Liberia|Liberia
LS|LSO|426|266|Lesotho|Lesotho
LT|LTU|440|370|Lituanie|Lithuania
LU|LUX|442|352|Luxembourg|Luxembourg
LV|LVA|428|371|Lettonie|Latvia
LY|LBY|434|218|Libye|Libya
MA|MAR|504|212|Maroc|Morocco
MC|MCO|492|377|Monaco|Monaco
MD|MDA|498|373|Moldavie|Moldova
ME|MNE|499|382|Monténégro|Montenegro
MF|MAF|663|590|Saint-Martin|Saint Martin
MG|MDG|450|261|Madagascar|Madagascar
MH|MHL|584|692|Îles Marshall|Marshall Islands
MK|MKD|807|389|Macédoine du Nord|North Macedonia
ML|MLI|466|223|Mali|Mali
MM|MMR|104|95|Myanmar|Myanmar
MN|MNG|496|976|Mongolie|Mongolia
MO|MAC|446|853|Macao|Macao
MP|MNP|580|1-670|Îles Mariannes du Nord|Northern Mariana Islands
MQ|MTQ|474|596|Martinique|Martinique
MR|MRT|478|222|Mauritanie|Mauritania
MS|MSR|500|1-664|Montserrat|Montserrat
MT|MLT|470|356|Malte|Malta
MU|MUS|480|230|Maurice|Mauritius
MV|MDV|462|960|Maldives|Maldives
MW|MWI|454|265|Malawi|Malawi
MX|MEX|484|52|Mexique|Mexico
MY|MYS|458|60|Malaisie|Malaysia
MZ|MOZ|508|258|Mozambique|Mozambique
NA|NAM|516|264|Namibie|Namibia
NC|NCL|540|687|Nouvelle-Calédonie|New Caledonia
NE|NER|562|227|Niger|Niger
NF|NFK|574|672|Île Norfolk|Norfolk Island
NG|NGA|566|234|Nigeria|Nigeria
NI|NIC|558|505|Nicaragua|Nicaragua
NL|NLD|528|31|Pays-Bas|Netherlands
NO|NOR|578|47|Norvège|Norway
NP|NPL|524|977|Népal|Nepal
NR|NRU|520|674|Nauru|Nauru
NU|NIU|570|683|Niue|Niue
NZ|NZL|554|64|Nouvelle-Zélande|New Zealand
OM|OMN|512|968|Oman|Oman
PA|PAN|591|507|Panama|Panama
PE|PER|604|51|Pérou|Peru
PF|PYF|258|689|Polynésie française|French Polynesia
PG|PNG|598|675|Papouasie-Nouvelle-Guinée|Papua New Guinea
PH|PHL|608|63|Philippines|Philippines
PK|PAK|586|92|Pakistan|Pakistan
PL|POL|616|48|Pologne|Poland
PM|SPM|666|508|Saint-Pierre-et-Miquelon|Saint Pierre and Miquelon
PN|PCN|612|64|Îles Pitcairn|Pitcairn Islands
PR|PRI|630|1-787|Porto Rico|Puerto Rico
PS|PSE|275|970|Palestine|Palestine
PT|PRT|620|351|Portugal|Portugal
PW|PLW|585|680|Palaos|Palau
PY|PRY|600|595|Paraguay|Paraguay
QA|QAT|634|974|Qatar|Qatar
RE|REU|638|262|La Réunion|Reunion
RO|ROU|642|40|Roumanie|Romania
RS|SRB|688|381|Serbie|Serbia
RU|RUS|643|7|Russie|Russia
RW|RWA|646|250|Rwanda|Rwanda
SA|SAU|682|966|Arabie saoudite|Saudi Arabia
SB|SLB|090|677|Îles Salomon|Solomon Islands
SC|SYC|690|248|Seychelles|Seychelles
SD|SDN|729|249|Soudan|Sudan
SE|SWE|752|46|Suède|Sweden
SG|SGP|702|65|Singapour|Singapore
SH|SHN|654|290|Sainte-Hélène|Saint Helena
SI|SVN|705|386|Slovénie|Slovenia
SJ|SJM|744|47|Svalbard et Jan Mayen|Svalbard and Jan Mayen
SK|SVK|703|421|Slovaquie|Slovakia
SL|SLE|694|232|Sierra Leone|Sierra Leone
SM|SMR|674|378|Saint-Marin|San Marino
SN|SEN|686|221|Sénégal|Senegal
SO|SOM|706|252|Somalie|Somalia
SR|SUR|740|597|Suriname|Suriname
SS|SSD|728|211|Soudan du Sud|South Sudan
ST|STP|678|239|Sao Tomé-et-Principe|Sao Tome and Principe
SV|SLV|222|503|Salvador|El Salvador
SX|SXM|534|1-721|Saint-Martin|Sint Maarten
SY|SYR|760|963|Syrie|Syria
SZ|SWZ|748|268|Eswatini|Eswatini
TC|TCA|796|1-649|Îles Turques-et-Caïques|Turks and Caicos Islands
TD|TCD|148|235|Tchad|Chad
TF|ATF|260||Terres australes françaises|French Southern Territories
TG|TGO|768|228|Togo|Togo
TH|THA|764|66|Thaïlande|Thailand
TJ|TJK|762|992|Tadjikistan|Tajikistan
TK|TKL|772|690|Tokelau|Tokelau
TL|TLS|626|670|Timor oriental|Timor-Leste
TM|TKM|795|993|Turkménistan|Turkmenistan
TN|TUN|788|216|Tunisie|Tunisia
TO|TON|776|676|Tonga|Tonga
TR|TUR|792|90|Turquie|Turkey
TT|TTO|780|1-868|Trinité-et-Tobago|Trinidad and Tobago
TV|TUV|798|688|Tuvalu|Tuvalu
TW|TWN|158|886|Taïwan|Taiwan
TZ|TZA|834|255|Tanzanie|Tanzania
UA|UKR|804|380|Ukraine|Ukraine
UG|UGA|800|256|Ouganda|Uganda
UM|UMI|581||Îles mineures éloignées des États-Unis|United States Minor Outlying Islands
US|USA|840|1|États-Unis|United States
UY|URY|858|598|Uruguay|Uruguay
UZ|UZB|860|998|Ouzbékistan|Uzbekistan
VA|VAT|336|379|Vatican|Vatican City
VC|VCT|670|1-784|Saint-Vincent-et-les-Grenadines|Saint Vincent and the Grenadines
VE|VEN|862|58|Venezuela|Venezuela
VG|VGB|092|1-284|Îles Vierges britanniques|British Virgin Islands
VI|VIR|850|1-340|Îles Vierges des États-Unis|United States Virgin Islands
VN|VNM|704|84|Viêt Nam|Vietnam
VU|VUT|548|678|Vanuatu|Vanuatu
WF|WLF|876|681|Wallis-et-Futuna|Wallis and Futuna
WS|WSM|882|685|Samoa|Samoa
XK|XKX||383|Kosovo|Kosovo
YE|YEM|887|967|Yémen|Yemen
YT|MYT|175|262|Mayotte|Mayotte
ZA|ZAF|710|27|Afrique du Sud|South Africa
ZM|ZMB|894|260|Zambie|Zambia
ZW|ZWE|716|263|Zimbabwe|Zimbabwe
EOF

echo "Fichier /tmp/pays.unl créé avec succès"





isql - - <<EOT

DATABASE gc;

UPDATE
  gc_parsys
SET
  version='$VERS'
WHERE
  version<'$VERS';


-- Création de la table PAYS avec indicatif téléphonique
CREATE TABLE pays (
    code_alpha2     CHAR(2) NOT NULL,
    code_alpha3     CHAR(3) NOT NULL,
    code_numeric    CHAR(3),
    indicatif_tel   CHAR(10),
    nom_francais    CHAR(80) NOT NULL,
    nom_anglais     CHAR(80) NOT NULL
);

-- Création des index (l'index unique sur code_alpha2 sert de clé primaire)
CREATE UNIQUE INDEX idx_pays_alpha2 ON pays(code_alpha2);
CREATE UNIQUE INDEX idx_pays_alpha3 ON pays(code_alpha3);
CREATE INDEX idx_pays_nom_fr ON pays(nom_francais);
CREATE INDEX idx_pays_nom_en ON pays(nom_anglais);
CREATE INDEX idx_pays_indicatif ON pays(indicatif_tel);

-- Chargement des données depuis le fichier pays_v2.unl
-- Le fichier doit être dans le répertoire courant ou spécifier le chemin complet
LOAD FROM "/tmp/pays.unl" 
     DELIMITER '|'
     INSERT INTO pays;

-- Vérification du nombre d'enregistrements chargés
SELECT COUNT(*) AS nb_pays FROM pays;

-- Affichage de quelques exemples avec indicatifs
SELECT code_alpha2, code_alpha3, indicatif_tel, nom_francais, nom_anglais 
FROM pays 
WHERE code_alpha2 IN ('FR', 'US', 'CA', 'DE', 'GB', 'MQ')
ORDER BY code_alpha2;

-- Statistiques sur les indicatifs
SELECT COUNT(*) AS nb_avec_indicatif 
FROM pays 
WHERE indicatif_tel IS NOT NULL AND indicatif_tel != '';

SELECT COUNT(*) AS nb_sans_indicatif 
FROM pays 
WHERE indicatif_tel IS NULL OR indicatif_tel = '';


ALTER TABLE gc_soc ADD (
  pays_alpha2 CHAR(2),
  pays_alpha3 CHAR(3)
);

-- ============================================================
-- Fin du script
-- ============================================================
CLOSE DATABASE;

EOT

chmod 666 $DBPATH/gc.dbs/*.idx
chmod 666 $DBPATH/gc.dbs/*.dat

echo "Mise a jour terminee"