lispdoc: implemented the whole URI syntax; updated URIs in all docstrings to be writt...
[com-informatimago:com-informatimago.git] / common-lisp / cesarum / iso3166.lisp
1 ;;;; -*- mode:lisp; coding:utf-8 -*-
2 ;;;;****************************************************************************
3 ;;;;FILE:               iso3166.lisp
4 ;;;;LANGUAGE:           Common-Lisp
5 ;;;;SYSTEM:             Common-Lisp
6 ;;;;USER-INTERFACE:     NONE
7 ;;;;DESCRIPTION
8 ;;;;    
9 ;;;;    This package exports functions and data to process
10 ;;;;    iso3166 country codes.
11 ;;;;    
12 ;;;;AUTHORS
13 ;;;;    <PJB> Pascal J. Bourguignon <pjb@informatimago.com>
14 ;;;;MODIFICATIONS
15 ;;;;    2004-10-14 <PJB> Converted Alpha code symbols to strings.
16 ;;;;    2004-03-16 <PJB> Added alpha-3 and numeric codes.
17 ;;;;    2003-10-14 <PJB> Created.
18 ;;;;BUGS
19 ;;;;LEGAL
20 ;;;;    AGPL3
21 ;;;;    
22 ;;;;    Copyright Pascal J. Bourguignon 2003 - 2012
23 ;;;;    
24 ;;;;    This program is free software: you can redistribute it and/or modify
25 ;;;;    it under the terms of the GNU Affero General Public License as published by
26 ;;;;    the Free Software Foundation, either version 3 of the License, or
27 ;;;;    (at your option) any later version.
28 ;;;;    
29 ;;;;    This program is distributed in the hope that it will be useful,
30 ;;;;    but WITHOUT ANY WARRANTY; without even the implied warranty of
31 ;;;;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32 ;;;;    GNU Affero General Public License for more details.
33 ;;;;    
34 ;;;;    You should have received a copy of the GNU Affero General Public License
35 ;;;;    along with this program.  If not, see <http://www.gnu.org/licenses/>
36 ;;;;****************************************************************************
37
38 (in-package "COMMON-LISP-USER")
39 (defpackage "COM.INFORMATIMAGO.COMMON-LISP.CESARUM.ISO3166"
40   (:use "COMMON-LISP")
41   (:export "GET-COUNTRIES")
42   (:documentation
43    "
44 This package exports functions and data to process iso3166 country codes.
45     
46
47 License:
48
49     AGPL3
50     
51     Copyright Pascal J. Bourguignon 2003 - 2012
52     
53     This program is free software: you can redistribute it and/or modify
54     it under the terms of the GNU Affero General Public License as published by
55     the Free Software Foundation, either version 3 of the License, or
56     (at your option) any later version.
57     
58     This program is distributed in the hope that it will be useful,
59     but WITHOUT ANY WARRANTY; without even the implied warranty of
60     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
61     GNU Affero General Public License for more details.
62     
63     You should have received a copy of the GNU Affero General Public License
64     along with this program.
65     If not, see <http://www.gnu.org/licenses/>
66
67 "))
68 (in-package "COM.INFORMATIMAGO.COMMON-LISP.CESARUM.ISO3166")
69
70
71
72
73 (defmacro c-code-n  (c) `(first   ,c))
74 (defmacro c-code-3  (c) `(second  ,c))
75 (defmacro c-code-2  (c) `(third   ,c))
76 (defmacro c-exists  (c) `(fourth  ,c))
77 (defmacro c-fr-name (c) `(fifth   ,c))
78 (defmacro c-en-name (c) `(sixth   ,c))
79
80 ;; https://online.correos.es/ayuda/codigoiso.asp
81
82 (defvar +countries+ 
83   '( 
84     ( 180 "COD" "CD" nil   
85      "La République Démocratique Du Congo"
86      "The Democratic Republic Of Congo")
87     ( 807 "MKD" "MK" nil  
88      "L'Ex-République Yougoslave De Macédoine"
89      "The Former Yugoslav Republic Of Macedonia")
90     ( 275 "PSE" "PS" nil  
91      "Territoire Palestinien Occupé"
92      "Occupied Palestinian Territory")
93     ( 626 "TLS" "TL" nil  
94      "Timor-Leste"
95      "Timor-Leste")
96     ( 020 "AND" "AD" t    
97      "Andorre"
98      "Andorra")
99     ( 784 "ARE" "AE" t    
100      "Émirats Arabes Unis"
101      "United Arab Emirates")
102     ( 004 "AFG" "AF" t    
103      "Afghanistan"
104      "Afghanistan")
105     ( 028 "ATG" "AG" t    
106      "Antigua et Barbuda"
107      "Antigua and Barbuda")
108     ( 660 "AIA" "AI" t    
109      "Anguilla"
110      "Anguilla")
111     ( 008 "ALB" "AL" t    
112      "Albanie"
113      "Albania")
114     ( 051 "ARM" "AM" t    
115      "Arménie"
116      "Armenia")
117     ( 530 "ANT" "AN" t    
118      "Antilles Néerlandaises"
119      "Netherlands Antilles")
120     ( 024 "AGO" "AO" t    
121      "Angola"
122      "Angola")
123     ( 010 "ATA" "AQ" t    
124      "Antarctique"
125      "Antarctica")
126     ( 032 "ARG" "AR" t    
127      "Argentine"
128      "Argentina")
129     ( 016 "ASM" "AS" t    
130      "Samoa Américaines"
131      "American Samoa")
132     ( 040 "AUT" "AT" t    
133      "Autriche"
134      "Austria")
135     ( 036 "AUS" "AU" t    
136      "Australie"
137      "Australia")
138     ( 533 "ABW" "AW" t    
139      "Aruba"
140      "Aruba")
141     ( 031 "AZE" "AZ" t    
142      "Azerbaïdjan"
143      "Azerbaijan")
144     ( 070 "BIH" "BA" t    
145      "Bosnie-Herzégovine"
146      "Bosnia and Herzegovina")
147     ( 052 "BRB" "BB" t    
148      "Barbade"
149      "Barbados")
150     ( 050 "BGD" "BD" t    
151      "Bangladesh"
152      "Bangladesh")
153     ( 056 "BEL" "BE" t    
154      "Belgique"
155      "Belgium")
156     ( 854 "BFA" "BF" t    
157      "Burkina Faso"
158      "Burkina Faso")
159     ( 100 "BGR" "BG" t    
160      "Bulgarie"
161      "Bulgaria")
162     ( 048 "BHR" "BH" t    
163      "Bahreïn"
164      "Bahrain")
165     ( 108 "BDI" "BI" t    
166      "Burundi"
167      "Burundi")
168     ( 204 "BEN" "BJ" t    
169      "Bénin"
170      "Benin")
171     ( 060 "BMU" "BM" t    
172      "Bermudes"
173      "Bermuda")
174     ( 096 "BRN" "BN" t    
175      "Brunéi Darussalam"
176      "Brunei Darussalam")
177     ( 068 "BOL" "BO" t    
178      "Bolivie"
179      "Bolivia")
180     ( 076 "BRA" "BR" t    
181      "Brésil"
182      "Brazil")
183     ( 044 "BHS" "BS" t    
184      "Bahamas"
185      "Bahamas")
186     ( 064 "BTN" "BT" t    
187      "Bhoutan"
188      "Bhutan")
189     ( 000 "NIL" "BU" nil  
190      "Burma"
191      "Burma")
192     ( 074 "BVT" "BV" t    
193      "Île Bouvet"
194      "Bouvet Island")
195     ( 072 "BWA" "BW" t    
196      "Botswana"
197      "Botswana")
198     ( 112 "BLR" "BY" t    
199      "Bélarus"
200      "Belarus")
201     ( 084 "BLZ" "BZ" t    
202      "Belize"
203      "Belize")
204     ( 124 "CAN" "CA" t    
205      "Canada"
206      "Canada")
207     ( 166 "CCK" "CC" t    
208      "Îles Cocos (Keeling)"
209      "Cocos (Keeling) Islands")
210     ( 140 "CAF" "CF" t    
211      "République Centrafricaine"
212      "Central African Republic")
213     ( 178 "COG" "CG" t    
214      "Congo"
215      "Republic of the Congo")
216     ( 756 "CHE" "CH" t    
217      "Suisse"
218      "Switzerland")
219     ( 384 "CIV" "CI" t    
220      "Côte d'Ivoire"
221      "Ivory Coast")
222     ( 184 "COK" "CK" t    
223      "Îles Cook"
224      "Cook Islands")
225     ( 152 "CHL" "CL" t    
226      "Chili"
227      "Chile")
228     ( 120 "CMR" "CM" t    
229      "Cameroun"
230      "Cameroon")
231     ( 156 "CHN" "CN" t    
232      "Chine"
233      "China")
234     ( 170 "COL" "CO" t    
235      "Colombie"
236      "Colombia")
237     ( 188 "CRI" "CR" t    
238      "Costa Rica"
239      "Costa Rica")
240     ( 891 "SCG" "CS" t    
241      "Serbie et Monténégro"
242      "Serbia and Montenegro")
243     ( 192 "CUB" "CU" t    
244      "Cuba"
245      "Cuba")
246     ( 132 "CPV" "CV" t    
247      "Cap-Vert"
248      "Cape Verde")
249     ( 162 "CXR" "CX" t    
250      "Île Christmas"
251      "Christmas Island")
252     ( 196 "CYP" "CY" t    
253      "Chypre"
254      "Cyprus")
255     ( 203 "CZE" "CZ" t    
256      "République Tchèque"
257      "Czech Republic")
258     ( 000 "NIL" "DD" nil  
259      "République Démocratique d'Allemagne"
260      "German Democratic Republic")
261     ( 276 "DEU" "DE" t    
262      "Allemagne"
263      "Germany")
264     ( 262 "DJI" "DJ" t    
265      "Djibouti"
266      "Djibouti")
267     ( 208 "DNK" "DK" t    
268      "Danemark"
269      "Denmark")
270     ( 212 "DMA" "DM" t    
271      "Dominique"
272      "Dominica")
273     ( 214 "DOM" "DO" t    
274      "République Dominicaine"
275      "Dominican Republic")
276     ( 012 "DZA" "DZ" t    
277      "Algérie"
278      "Algeria")
279     ( 218 "ECU" "EC" t    
280      "Équateur"
281      "Ecuador")
282     ( 233 "EST" "EE" t    
283      "Estonie"
284      "Estonia")
285     ( 818 "EGY" "EG" t    
286      "Égypte"
287      "Egypt")
288     ( 732 "ESH" "EH" t    
289      "Sahara Occidental"
290      "Western Sahara")
291     ( 232 "ERI" "ER" t    
292      "Érythrée"
293      "Eritrea")
294     ( 724 "ESP" "ES" t    
295      "Espagne"
296      "Spain")
297     ( 231 "ETH" "ET" t    
298      "Éthiopie"
299      "Ethiopia")
300     ( 246 "FIN" "FI" t    
301      "Finlande"
302      "Finland")
303     ( 242 "FJI" "FJ" t    
304      "Fidji"
305      "Fiji")
306     ( 238 "FLK" "FK" t    
307      "Îles Malouines"
308      "Falkland Islands")
309     ( 583 "FSM" "FM" t    
310      "États Fédérés De Micronésie"
311      "Federated States Of Micronesia")
312     ( 234 "FRO" "FO" t    
313      "Îles Féroé"
314      "Faroe Islands")
315     ( 250 "FRA" "FR" t    
316      "France"
317      "France")
318     ( 000 "NIL" "FX" t    
319      "France Métropolitaine"
320      "Metropolitan France")
321     ( 266 "GAB" "GA" t    
322      "Gabon"
323      "Gabon")
324     ( 826 "GBR" "GB" t    
325      "Royaume-Uni"
326      "United Kingdom")
327     ( 308 "GRD" "GD" t    
328      "Grenade"
329      "Grenada")
330     ( 268 "GEO" "GE" t    
331      "Géorgie"
332      "Georgia")
333     ( 254 "GUF" "GF" t    
334      "Guyane Française"
335      "French Guiana")
336     ( 288 "GHA" "GH" t    
337      "Ghana"
338      "Ghana")
339     ( 292 "GIB" "GI" t    
340      "Gibraltar"
341      "Gibraltar")
342     ( 304 "GRL" "GL" t    
343      "Groenland"
344      "Greenland")
345     ( 270 "GMB" "GM" t    
346      "Gambie"
347      "Gambia")
348     ( 324 "GIN" "GN" t    
349      "Guinée"
350      "Guinea")
351     ( 312 "GLP" "GP" t    
352      "Guadeloupe"
353      "Guadeloupe")
354     ( 226 "GNQ" "GQ" t    
355      "Guinée Équatoriale"
356      "Equatorial Guinea")
357     ( 300 "GRC" "GR" t    
358      "Grèce"
359      "Greece")
360     ( 239 "SGS" "GS" t    
361      "Géorgie Du Sud et Les Îles Sandwich Du Sud"
362      "South Georgia and the South Sandwich Islands")
363     ( 320 "GTM" "GT" t    
364      "Guatemala"
365      "Guatemala")
366     ( 316 "GUM" "GU" t    
367      "Guam"
368      "Guam")
369     ( 624 "GNB" "GW" t    
370      "Guinée-Bissau"
371      "Guinea-Bissau")
372     ( 328 "GUY" "GY" t    
373      "Guyana"
374      "Guyana")
375     ( 344 "HKG" "HK" t    
376      "Hong-Kong"
377      "Hong Kong")
378     ( 334 "HMD" "HM" t    
379      "Île Mcdonald et îles Heard"
380      "Heard Island and Mcdonald Islands")
381     ( 340 "HND" "HN" t    
382      "Honduras"
383      "Honduras")
384     ( 191 "HRV" "HR" t    
385      "Croatie"
386      "Croatia")
387     ( 332 "HTI" "HT" t    
388      "Haïti"
389      "Haiti")
390     ( 348 "HUN" "HU" t    
391      "Hongrie"
392      "Hungary")
393     ( 360 "IDN" "ID" t    
394      "Indonésie"
395      "Indonesia")
396     ( 372 "IRL" "IE" t    
397      "Irlande"
398      "Republic of Ireland")
399     ( 376 "ISR" "IL" t    
400      "Israël"
401      "Israel")
402     ( 356 "IND" "IN" t    
403      "Inde"
404      "India")
405     ( 092 "IOT" "IO" t    
406      "Territoire Britannique de l'Océan Indien"
407      "British Indian Ocean Territory")
408     ( 368 "IRQ" "IQ" t    
409      "Iraq"
410      "Iraq")
411     ( 364 "IRN" "IR" t    
412      "République Islamique d'Iran"
413      "Islamic Republic of Iran")
414     ( 352 "ISL" "IS" t    
415      "Islande"
416      "Iceland")
417     ( 380 "ITA" "IT" t    
418      "Italie"
419      "Italy")
420     ( 388 "JAM" "JM" t    
421      "Jamaïque"
422      "Jamaica")
423     ( 400 "JOR" "JO" t    
424      "Jordanie"
425      "Jordan")
426     ( 392 "JPN" "JP" t    
427      "Japon"
428      "Japan")
429     ( 404 "KEN" "KE" t    
430      "Kenya"
431      "Kenya")
432     ( 417 "KGZ" "KG" t    
433      "Kirghizistan"
434      "Kyrgyzstan")
435     ( 116 "KHM" "KH" t    
436      "Cambodge"
437      "Cambodia")
438     ( 296 "KIR" "KI" t    
439      "Kiribati"
440      "Kiribati")
441     ( 174 "COM" "KM" t    
442      "Comores"
443      "Comoros")
444     ( 659 "KNA" "KN" t    
445      "Saint-Kitts et Nevis"
446      "Saint Kitts and Nevis")
447     ( 408 "PRK" "KP" t    
448      "République Populaire Démocratique De Corée"
449      "Democratic People's Republic of Korea")
450     ( 410 "KOR" "KR" t    
451      "République De Corée"
452      "Republic of Korea")
453     ( 414 "KWT" "KW" t    
454      "Koweït"
455      "Kuwait")
456     ( 136 "CYM" "KY" t    
457      "Îles Caïmanes"
458      "Cayman Islands")
459     ( 398 "KAZ" "KZ" t    
460      "Kazakhstan"
461      "Kazakhstan")
462     ( 418 "LAO" "LA" t    
463      "République Démocratique Populaire Lao"
464      "Lao People's Democratic Republic")
465     ( 422 "LBN" "LB" t    
466      "Liban"
467      "Lebanon")
468     ( 662 "LCA" "LC" t    
469      "Sainte-Lucie"
470      "Saint Lucia")
471     ( 438 "LIE" "LI" t    
472      "Liechtenstein"
473      "Liechtenstein")
474     ( 144 "LKA" "LK" t    
475      "Sri Lanka"
476      "Sri Lanka")
477     ( 430 "LBR" "LR" t    
478      "Libéria"
479      "Liberia")
480     ( 426 "LSO" "LS" t    
481      "Lesotho"
482      "Lesotho")
483     ( 440 "LTU" "LT" t    
484      "Lituanie"
485      "Lithuania")
486     ( 442 "LUX" "LU" t    
487      "Luxembourg"
488      "Luxembourg")
489     ( 428 "LVA" "LV" t    
490      "Lettonie"
491      "Latvia")
492     ( 434 "LBY" "LY" t    
493      "Jamahiriya Arabe Libyenne"
494      "Libyan Arab Jamahiriya")
495     ( 504 "MAR" "MA" t    
496      "Maroc"
497      "Morocco")
498     ( 492 "MCO" "MC" t    
499      "Monaco"
500      "Monaco")
501     ( 498 "MDA" "MD" t    
502      "République De Moldova"
503      "Republic of Moldova")
504     ( 450 "MDG" "MG" t    
505      "Madagascar"
506      "Madagascar")
507     ( 584 "MHL" "MH" t    
508      "Îles Marshall"
509      "Marshall Islands")
510     ( 466 "MLI" "ML" t    
511      "Mali"
512      "Mali")
513     ( 104 "MMR" "MM" t    
514      "Myanmar"
515      "Myanmar")
516     ( 496 "MNG" "MN" t    
517      "Mongolie"
518      "Mongolia")
519     ( 446 "MAC" "MO" t    
520      "Macao"
521      "Macao")
522     ( 580 "MNP" "MP" t    
523      "Îles Mariannes Du Nord"
524      "Northern Mariana Islands")
525     ( 474 "MTQ" "MQ" t    
526      "Martinique"
527      "Martinique")
528     ( 478 "MRT" "MR" t    
529      "Mauritanie"
530      "Mauritania")
531     ( 500 "MSR" "MS" t    
532      "Montserrat"
533      "Montserrat")
534     ( 470 "MLT" "MT" t    
535      "Malte"
536      "Malta")
537     ( 480 "MUS" "MU" t    
538      "Maurice"
539      "Mauritius")
540     ( 462 "MDV" "MV" t    
541      "Maldives"
542      "Maldives")
543     ( 454 "MWI" "MW" t    
544      "Malawi"
545      "Malawi")
546     ( 484 "MEX" "MX" t    
547      "Mexique"
548      "Mexico")
549     ( 458 "MYS" "MY" t    
550      "Malaisie"
551      "Malaysia")
552     ( 508 "MOZ" "MZ" t    
553      "Mozambique"
554      "Mozambique")
555     ( 516 "NAM" "NA" t    
556      "Namibie"
557      "Namibia")
558     ( 540 "NCL" "NC" t    
559      "Nouvelle-Calédonie"
560      "New Caledonia")
561     ( 562 "NER" "NE" t    
562      "Niger"
563      "Niger")
564     ( 574 "NFK" "NF" t    
565      "Île Norfolk"
566      "Norfolk Island")
567     ( 566 "NGA" "NG" t    
568      "Nigéria"
569      "Nigeria")
570     ( 558 "NIC" "NI" t    
571      "Nicaragua"
572      "Nicaragua")
573     ( 528 "NLD" "NL" t    
574      "Pays-Bas"
575      "Netherlands")
576     ( 578 "NOR" "NO" t    
577      "Norvège"
578      "Norway")
579     ( 524 "NPL" "NP" t    
580      "Népal"
581      "Nepal")
582     ( 520 "NRU" "NR" t    
583      "Nauru"
584      "Nauru")
585     ( 000 "NIL" "NT" nil  
586      "Nil"
587      "Nil")
588     ( 570 "NIU" "NU" t    
589      "Niué"
590      "Niue")
591     ( 554 "NZL" "NZ" t    
592      "Nouvelle-Zélande"
593      "New Zealand")
594     ( 512 "OMN" "OM" t    
595      "Oman"
596      "Oman")
597     ( 591 "PAN" "PA" t    
598      "Panama"
599      "Panama")
600     ( 604 "PER" "PE" t    
601      "Pérou"
602      "Peru")
603     ( 258 "PYF" "PF" t    
604      "Polynésie Française"
605      "French Polynesia")
606     ( 598 "PNG" "PG" t    
607      "Papouasie-Nouvelle-Guinée"
608      "Papua New Guinea")
609     ( 608 "PHL" "PH" t    
610      "Philippines"
611      "Philippines")
612     ( 586 "PAK" "PK" t    
613      "Pakistan"
614      "Pakistan")
615     ( 616 "POL" "PL" t    
616      "Pologne"
617      "Poland")
618     ( 666 "SPM" "PM" t    
619      "Saint-Pierre et Miquelon"
620      "Saint Pierre and Miquelon")
621     ( 612 "PCN" "PN" t    
622      "Pitcairn"
623      "Pitcairn")
624     ( 630 "PRI" "PR" t    
625      "Porto Rico"
626      "Puerto Rico")
627     ( 620 "PRT" "PT" t    
628      "Portugal"
629      "Portugal")
630     ( 585 "PLW" "PW" t    
631      "Palaos"
632      "Palau")
633     ( 600 "PRY" "PY" t    
634      "Paraguay"
635      "Paraguay")
636     ( 634 "QAT" "QA" t    
637      "Qatar"
638      "Qatar")
639     ( 638 "REU" "RE" t    
640      "Réunion"
641      "Reunion")
642     ( 642 "ROU" "RO" t    
643      "Roumanie"
644      "Romania")
645     ( 643 "RUS" "RU" t    
646      "Fédération De Russie"
647      "Russian Federation")
648     ( 646 "RWA" "RW" t    
649      "Rwanda"
650      "Rwanda")
651     ( 682 "SAU" "SA" t    
652      "Arabie Saoudite"
653      "Saudi Arabia")
654     ( 090 "SLB" "SB" t    
655      "Îles Salomon"
656      "Solomon Islands")
657     ( 690 "SYC" "SC" t    
658      "Seychelles"
659      "Seychelles")
660     ( 736 "SDN" "SD" t    
661      "Soudan"
662      "Sudan")
663     ( 752 "SWE" "SE" t    
664      "Suède"
665      "Sweden")
666     ( 702 "SGP" "SG" t    
667      "Singapour"
668      "Singapore")
669     ( 654 "SHN" "SH" t    
670      "Sainte-Hélène"
671      "Saint Helena")
672     ( 705 "SVN" "SI" t    
673      "Slovénie"
674      "Slovenia")
675     ( 744 "SJM" "SJ" t    
676      "Svalbard et île Jan Mayen"
677      "Svalbard and Jan Mayen Islands")
678     ( 703 "SVK" "SK" t    
679      "Slovaquie"
680      "Slovakia")
681     ( 694 "SLE" "SL" t    
682      "Sierra Leone"
683      "Sierra Leone")
684     ( 674 "SMR" "SM" t    
685      "Saint-Marin"
686      "San Marino")
687     ( 686 "SEN" "SN" t    
688      "Sénégal"
689      "Senegal")
690     ( 706 "SOM" "SO" t    
691      "Somalie"
692      "Somalia")
693     ( 740 "SUR" "SR" t    
694      "Suriname"
695      "Suriname")
696     ( 678 "STP" "ST" t    
697      "Sáo Tomé et Principe"
698      "Sao Tome and Principe")
699     ( 000 "NIL" "SU" nil  
700      "Union des Républiques Socialistes Soviétiques"
701      "Union of Soviet Socialist Republics")
702     ( 222 "SLV" "SV" t    
703      "El Salvador"
704      "El Salvador")
705     ( 760 "SYR" "SY" t    
706      "République Arabe Syrienne"
707      "Syrian Arab Republic")
708     ( 748 "SWZ" "SZ" t    
709      "Swaziland"
710      "Swaziland")
711     ( 796 "TCA" "TC" t    
712      "Îles Turks et Caïques"
713      "Turks and Caicos Islands")
714     ( 148 "TCD" "TD" t    
715      "Tchad"
716      "Chad")
717     ( 260 "ATF" "TF" t    
718      "Terres Australes Françaises"
719      "French Southern Territories")
720     ( 768 "TGO" "TG" t    
721      "Togo"
722      "Togo")
723     ( 764 "THA" "TH" t    
724      "Thaïlande"
725      "Thailand")
726     ( 762 "TJK" "TJ" t    
727      "Tadjikistan"
728      "Tajikistan")
729     ( 772 "TKL" "TK" t    
730      "Tokelau"
731      "Tokelau")
732     ( 795 "TKM" "TM" t    
733      "Turkménistan"
734      "Turkmenistan")
735     ( 788 "TUN" "TN" t    
736      "Tunisie"
737      "Tunisia")
738     ( 776 "TON" "TO" t    
739      "Tonga"
740      "Tonga")
741     ( 000 "NIL" "TP" t    
742      "Timor Oriental"
743      "East Timor")
744     ( 792 "TUR" "TR" t    
745      "Turquie"
746      "Turkey")
747     ( 780 "TTO" "TT" t    
748      "Trinité et Tobago"
749      "Trinidad and Tobago")
750     ( 798 "TUV" "TV" t    
751      "Tuvalu"
752      "Tuvalu")
753     ( 158 "TWN" "TW" t    
754      "Province de Chine Taïwan"
755      "Province of China Taiwan")
756     ( 834 "TZA" "TZ" t    
757      "République-Unie de Tanzanie"
758      "United Republic of Tanzania")
759     ( 804 "UKR" "UA" t    
760      "Ukraine"
761      "Ukraine")
762     ( 800 "UGA" "UG" t    
763      "Ouganda"
764      "Uganda")
765     ( 581 "UMI" "UM" t    
766      "Îles Mineures Éloignées des États-Unis"
767      "United States Minor Outlying Islands")
768     ( 840 "USA" "US" t    
769      "États-Unis"
770      "United States of America")
771     ( 858 "URY" "UY" t    
772      "Uruguay"
773      "Uruguay")
774     ( 860 "UZB" "UZ" t    
775      "Ouzbékistan"
776      "Uzbekistan")
777     ( 336 "VAT" "VA" t    
778      "Saint-Siège (État de La Cité Du Vatican)"
779      "Holy See (Vatican City State)")
780     ( 670 "VCT" "VC" t    
781      "Saint-Vincent et Les Grenadines"
782      "Saint Vincent and The Grenadines")
783     ( 862 "VEN" "VE" t    
784      "Venezuela"
785      "Venezuela")
786     ( 092 "VGB" "VG" t    
787      "Îles Vierges Britanniques"
788      "British Virgin Islands")
789     ( 850 "VIR" "VI" t    
790      "Îles Vierges Des États-Unis"
791      "United States Virgin Islands")
792     ( 704 "VNM" "VN" t    
793      "Viet Nam"
794      "Viet Nam")
795     ( 548 "VUT" "VU" t    
796      "Vanuatu"
797      "Vanuatu")
798     ( 876 "WLF" "WF" t    
799      "Wallis Et Futuna"
800      "Wallis and Futuna Islands")
801     ( 882 "WSM" "WS" t    
802      "Samoa"
803      "Samoa")
804     ( 000 "NIL" "YD" nil  
805      "Yemen Démocratique"
806      "Democratic Yemen")
807     ( 887 "YEM" "YE" t    
808      "Yémen"
809      "Yemen")
810     ( 175 "MYT" "YT" t    
811      "Mayotte"
812      "Mayotte")
813     ( 000 "NIL" "YU" t    
814      "Yougoslavie"
815      "Yugoslavia")
816     ( 710 "ZAF" "ZA" t    
817      "Afrique Du Sud"
818      "South Africa")
819     ( 894 "ZMB" "ZM" t    
820      "Zambie"
821      "Zambia")
822     ( 000 "NIL" "ZR" t    
823      "Zaïre"
824      "Zaire")
825     ( 716 "ZWE" "ZW" t    
826      "Zimbabwe"
827      "Zimbabwe")
828     ( 000 "NIL" "ZZ" t    
829      "Pays inconnu ou non spécifié"
830      "Unknown or unspecified country")
831     ( 248 "ALA" "AX" t    
832      "Îles Aland"
833      "Áland Islands")
834     )) ;;+COUNTRIES+
835
836
837
838 (defun get-countries (&key only-existing (language "EN") order)
839   "
840 only-existing:  T <=> filter out codes for countries that don't exist anymore.
841 language:       EN or FR
842                 (case insensitive string or symbol whose name is EN or FR)
843 order:          :NAME or :CODE; if not specified, no ordering is done.
844 RETURN:         A list of (code name).
845 "
846   (let* ((include-all (not only-existing))
847          (result (mapcan (lambda (c)
848                            (when (or include-all (c-exists c))
849                              (list (list (c-code-2 c)
850                                          (if (string-equal "EN" language)
851                                              (c-en-name c)
852                                              (c-fr-name c))))))
853                          +countries+)))
854     (when order
855       (setq result
856             (sort result
857                   (if (eq :code order)
858                       (lambda (a b) (string-lessp (first  a) (first  b)))
859                       (lambda (a b) (string-lessp (second a) (second b)))))))
860     result))
861
862
863
864 ;;;; iso3166.lisp                     --                     --          ;;;;