Documentation for this module may be created at Module:IATA and ICAO code/data/sandbox1/doc

local p = {}
--Australia/New Zeland/Oceania--
p.codetbl = {
 --{'IATA','ICAO', 'airportCityName', 'WikiName'}, do not forget that ' then \'
--Australia/New Zeland/Oceania
	{ 'AAA', 'NTGA', 'Anaa Airport', 'Anaa' },
--Italy
	{ 'AHO', 'LIEA', 'Alghero-Fertilia Airport', 'Alghero' },
	{ 'ALL', 'LIMG', 'Riviera Airport', 'Albenga, Savona' },
	{ 'AOI', 'LIPY', 'Marche Airport', 'Ancona' },
--France
	{'DZA','FMCZ','Dzaoudzi–Pamandzi International Airport','Dzaoudzi'},
	{'RUN','FMEE','Roland Garros Airport','Saint-Denis'},
	{'ZSE','FMEP','Pierrefonds Airport','Saint-Pierre'},
	{'CQF','LFAC','Calais–Dunkerque Airport','Calais'},
	{'XSJ','LFAG','Peronne-St Quentin Airport','Estrées-Mons'},
	{   '','LFAI','Nangis - Les Loges aerodrome','Nangis'},
	{   '','LFAK','Dunkerque – Les Moëres Airport','Dunkirk'},
	{'BYF','LFAQ','Albert – Picardie Airport','Albert'},
	{'LTQ','LFAT','Le Touquet – Côte d\'Opale Airport','Le Touquet-Paris-Plage'},
	{'XVS','LFAV','Valenciennes-Denain Airport','Valenciennes-Denain'},
	{'QAM','LFAY','Amiens – Glisy Aerodrome','Amiens'},
	{'AGF','LFBA','Agen La Garenne Airport','Agen'},
	{   '','LFBC','Cazaux Air Base','La Teste-de-Buch'},
	{'BOD','LFBD','Bordeaux-Mérignac Air Base','Bordeaux'},
	{'BOD','LFBD','Bordeaux–Mérignac Airport','Bordeaux'},
	{'EGC','LFBE','Bergerac Dordogne Périgord Airport','Bergerac'},
	{'CNG','LFBG','Cognac – Châteaubernard Air Base','Cognac'},
	{'LRH','LFBH','La Rochelle – Île de Ré Airport','La Rochelle'},
	{'PIS','LFBI','Poitiers–Biard Airport','Poitiers'},
	{'MCU','LFBK','Montluçon – Guéret Airport','Montluçon'},
	{'LIG','LFBL','Limoges – Bellegarde Airport','Limoges'},
	{'XMJ','LFBM','Mont-de-Marsan Air Base','Mont-de-Marsan'},
	{'TLS','LFBO','Toulouse–Blagnac Airport','Toulouse'},
	{'PUF','LFBP','Pau Pyrénées Airport','Pau'},
	{   '','LFBR','Muret – Lherm Aerodrome','Muret'},
	{   '','LFBS','Biscarrosse – Parentis Airport','Biscarrosse'},
	{'LDE','LFBT','Tarbes–Lourdes–Pyrénées Airport','Tarbes'},
	{'ANG','LFBU','Angoulême – Cognac International Airport','Angoulême'},
	{'BVE','LFBV','Brive–Laroche Airport','Brive-la-Gaillarde'},
	{'PGX','LFBX','Périgueux Bassillac Airport','Périgueux'},
	{'BIQ','LFBZ','Biarritz Pays Basque Airport','Biarritz'},
	{'DCM','LFCK','Castres–Mazamet Airport','Castres'},
	{   '','LFCL','Toulouse – Lasbordes Airport','Toulouse'},
	{'RDZ','LFCR','Rodez–Aveyron Airport','Rodez'},
	{   '','LFDM','Marmande – Virazeil Airport','Marmande – Virazeil'},
	{   '','LFEC','Ushant Airport','Ushant'},
	{'IDY','LFEY','Île d\'Yeu Aerodrome','Île d\'Yeu'},
	{   '','LFFD','Saint-André-de-l\'Eure Airport','Saint-André-de-l\'Eure'},
	{'XCY','LFFH','Château-Thierry – Belleau Aerodrome','Château-Thierry'},
	{'CMR','LFGA','Colmar Airport','Colmar'},
	{   '','LFGB','Mulhouse–Habsheim Airport','Mulhouse–Habsheim'},
	{   '','LFGG','Belfort Chaux Airport','Belfort'},
	{'DLE','LFGJ','Dole–Jura Airport','Dole'},
	{   '','LFGR','Doncourt-lès-Conflans Airport','Doncourt-lès-Conflans'},
	{'XVN','LFGW','Verdun-Le-Rozelier Airport','Verdun-Le-Rozelier'},
	{'MVV','LFHM','Megève Altiport','Megève'},
	{'OBS','LFHO','Aubenas Aerodrome','Aubenas'},
	{'LPY','LFHP','Le Puy – Loudes Airport','Le Puy-en-Velay'},
	{'XBK','LFHS','Bourg – Ceyzériat Airport','Bourg-en-Bresse'},
	{'AHZ','LFHU','Alpe d\'Huez Airport','L\'Alpe d\'Huez'},
	{'XVF','LFHV','Villefranche – Tarare Airport','Villefranche'},
	{'XMU','LFHY','Moulins – Montbeugny Airport','Moulins'},
	{'XSN','LFHZ','Sallanches Aerodrome','Sallanches'},
	{   '','LFIS','Saint-Inglevert Airfield','Saint-Inglevert'},
	{   '','LFJD','Corlier Aerodrome','Corlier'},
	{'ETZ','LFJL','Metz–Nancy–Lorraine Airport','Metz'},
	{'ANE','LFJR','Angers – Loire Airport','Angers'},
	{   '','LFJY','Chambley-Bussières Air Base','Chambley-Bussières'},
	{'BIA','LFKB','Bastia – Poretta Airport','Bastia'},
	{'CLY','LFKC','Calvi – Sainte-Catherine Airport','Calvi'},
	{'FSC','LFKF','Figari–Sud Corse Airport','Porto-Vecchio'},
	{   '','LFKG','Ghisonaccia Alzitone Airport','Ghisonaccia'},
	{'AJA','LFKJ','Ajaccio Napoleon Bonaparte Airport','Ajaccio'},
	{'SOZ','LFKS','Solenzara Air Base','Solenzara'},
	{'MFX','LFKX','Méribel Altiport','Méribel'},
	{'AUF','LFLA','Auxerre – Branches Aerodrome','Auxerre'},
	{'CMF','LFLB','Chambéry Airport','Chambéry'},
	{'CFE','LFLC','Clermont-Ferrand Auvergne Airport','Clermont-Ferrand'},
	{'BOU','LFLD','Bourges Airport','Bourges'},
	{   '','LFLE','Chambéry Aerodrome','Chambéry'},
	{   '','LFLG','Grenoble – Le Versoud Aerodrome','Grenoble'},
	{'XCD','LFLH','Chalon – Champforgeuil Airport','Chalon-sur-Saône'},
	{'QNJ','LFLI','Annemasse Aerodrome','Annemasse'},
	{'CVF','LFLJ','Courchevel Altiport','Courchevel'},
	{'LYS','LFLL','Lyon–Saint-Exupéry Airport','Lyon'},
	{'SYT','LFLN','Saint-Yan Airport','Saint-Yan'},
	{'NCY','LFLP','Annecy – Haute-Savoie – Mont Blanc Airport','Annecy'},
	{'GNB','LFLS','Alpes–Isère Airport','Grenoble'},
	{'VAF','LFLU','Valence-Chabeuil Airport','Valence'},
	{'VHY','LFLV','Vichy — Charmeil Airport','Vichy'},
	{'AUR','LFLW','Aurillac – Tronquières Airport','Aurillac'},
	{'CHR','LFLX','Châteauroux-Centre "Marcel Dassault" Airport','Châteauroux'},
	{'LYN','LFLY','Lyon–Bron Airport','Lyon'},
	{'QXB','LFMA','Aix-en-Provence Aerodrome','Aix-en-Provence'},
	{   '','LFMC','Le Luc – Le Cannet Airport','Le Luc'},
	{'CEQ','LFMD','Cannes – Mandelieu Airport','Cannes'},
	{   '','LFMF','Fayence-Tourrettes Airfield','Fayence'},
	{'EBU','LFMH','Saint-Étienne–Bouthéon Airport','Saint-Étienne'},
	{'QIE','LFMI','Istres-Le Tubé Air Base','Istres'},
	{'CCF','LFMK','Carcassonne Airport','Carcassonne'},
	{'MRS','LFML','Marseille Provence Airport','Marseille'},
	{'NCE','LFMN','Nice Côte d\'Azur Airport','Nice'},
	{'XOG','LFMO','Orange-Caritat Air Base','Orange'},
	{'PGF','LFMP','Perpignan–Rivesaltes Airport','Perpignan'},
	{'BAE','LFMR','Barcelonnette – Saint-Pons Airfield','Barcelonnette'},
	{'MPL','LFMT','Montpellier–Méditerranée Airport','Montpellier'},
	{'BZR','LFMU','Béziers Cap d\'Agde Airport','Béziers'},
	{'AVN','LFMV','Avignon – Provence Airport','Avignon'},
	{   '','LFMW','Castelnaudary – Villeneuve Airport','Castelnaudary'},
	{   '','LFMX','Château-Arnoux-Saint-Auban Airport','Château-Arnoux-Saint-Auban'},
	{   '','LFMY','Salon-de-Provence Air Base','Salon-de-Provence'},
	{'GAT','LFNA','Gap–Tallard Airport','Gap'},
	{   '','LFOA','Avord Air Base','Avord'},
	{'BVA','LFOB','Beauvais–Tillé Airport','Beauvais'},
	{   '','LFOC','Châteaudun Air Base','Châteaudun'},
	{'EVX','LFOE','Évreux-Fauville Air Base','Évreux'},
	{'LEH','LFOH','Le Havre – Octeville Airport','Le Havre'},
	{'XAB','LFOI','Aerodrome Abbeville','Abbeville'},
	{'XCR','LFOK','Vatry Air Base','Vatry'},
	{'XCR','LFOK','Châlons Vatry Airport','Châlons-en-Champagne'},
	{   '','LFOM','Lessay Airport','Lessay'},
	{'XDR','LFON','Vernouillet Airport','Vernouillet'},
	{'URO','LFOP','Rouen Airport','Rouen'},
	{'QTJ','LFOR','Chartres – Champhol Aerodrome','Chartres'},
	{'TUF','LFOT','Tours Val de Loire Airport','Tours'},
	{'CET','LFOU','Cholet Le Pontreau Airport','Cholet'},
	{'ORE','LFOZ','Orléans – Saint-Denis-de-l\'Hôtel Airport','Orléans'},
	{'XYP','LFPA','Persan-Beaumont Airport','Persan'},
	{'LBG','LFPB','Paris–Le Bourget Airport','Paris–Le Bourget'},
	{'CDG','LFPG','Charles de Gaulle Airport','Paris - Charles de Gaulle'},
	{   '','LFPK','Coulommiers – Voisins Aerodrome','Coulommiers'},
	{'XLG','LFPL','Lognes – Émerainville aerodrome','Lognes'},
	{   '','LFPM','Melun Villaroche Aerodrome','Melun'},
	{'TNF','LFPN','Toussus-le-Noble Airport','Toussus-le-Noble'},
	{'ORY','LFPO','Orly Airport','Paris'},
	{'POX','LFPT','Pontoise – Cormeilles Aerodrome','Pontoise'},
	{'VIY','LFPV','Vélizy – Villacoublay Air Base','Vélizy – Villacoublay'},
	{   '','LFPY','Brétigny-sur-Orge Air Base','Brétigny-sur-Orge'},
	{'RPK','LFQA','Reims – Prunay Aerodrome','Reims'},
	{'QYR','LFQB','Troyes – Barberey Airport','Troyes'},
	{   '','LFQC','Lunéville-Croismare Airport','Lunéville-Croismare'},
	{'QRV','LFQD','Arras – Roclincourt Airport','Arras'},
	{'QBQ','LFQM','Besançon – La Vèze Aerodrome','Besançon'},
	{   '','LFQO','Marcq-en-Baroeul Airport','Bondues'},
	{   '','LFQP','Quartier La Horie','Phalsbourg'},
	{'LIL','LFQQ','Lille Airport','Lille'},
	{   '','LFQS','Vitry-En-Artois Airport','Vitry-en-Artois'},
	{'HZB','LFQT','Merville–Calonne Airport','Merville'},
	{'BES','LFRB','Brest Bretagne Airport','Brest'},
	{'CER','LFRC','Cherbourg – Maupertus Airport','Cherbourg-Octeville'},
	{'DNR','LFRD','Dinard–Pleurtuit–Saint-Malo Airport','Saint-Malo'},
	{'DOL','LFRG','Deauville – Normandie Airport','Deauville'},
	{'LRT','LFRH','Lorient South Brittany Airport','Lorient'},
	{'CFR','LFRK','Caen – Carpiquet Airport','Caen'},
	{'RNS','LFRN','Rennes–Saint-Jacques Airport','Rennes'},
	{'LAI','LFRO','Lannion – Côte de Granit Airport','Lannion'},
	{'UIP','LFRQ','Quimper–Cornouaille Airport','Quimper'},
	{'NTE','LFRS','Nantes Atlantique Airport','Nantes'},
	{'SBK','LFRT','Saint-Brieuc – Armor Airport','Saint-Brieuc'},
	{'MXN','LFRU','Morlaix – Ploujean Airport','Morlaix'},
	{'VNE','LFRV','Meucon Airport','Monterblanc'},
	{   '','LFSC','Quartier Colonel Dio','Meyenheim'},
	{'DIJ','LFSD','Dijon Air Base','Dijon'},
	{'MZM','LFSF','Metz-Frescaty Air Base','Metz'},
	{'EPL','LFSG','Épinal – Mirecourt Airport','Épinal'},
	{   '','LFSH','Haguenau Airport','Haguenau'},
	{   '','LFSI','Saint-Dizier – Robinson Air Base','Saint-Dizier'},
	{'BVE','LFSL','Brive–Souillac Airport','Brive-la-Gaillarde'},
	{'XMF','LFSM','Montbéliard – Courcelles Aerodrome','Montbéliard'},
	{'ENC','LFSN','Nancy-Essey Airport','Nancy'},
	{   '','LFSO','Nancy – Ochey Air Base','Ochey'},
	{   '','LFSP','Pontarlier Airport','Pontarlier'},
	{'RHE','LFSR','Reims – Champagne Air Base','Reims'},
	{'SXB','LFST','Strasbourg Airport','Strasbourg'},
	{   '','LFSX','Luxeuil Air Base','Luxeuil'},
	{'TLN','LFTH','Toulon–Hyères Airport','Toulon'},
	{'FRJ','LFTU','Frejus Airport','Fréjus'},
	{'FNI','LFTW','Nîmes–Alès–Camargue–Cévennes Airport','Nîmes'},
	{'LTT','LFTZ','La Môle – Saint-Tropez Airport','Saint-Tropez'},
	{'MQC','LFVM','Miquelon Airport','Miquelon-Langlade'},
	{'FSP','LFVP','Saint-Pierre Airport','Saint-Pierre'},
	{   '','LFXA','Ambérieu-en-Bugey Air Base','Ambérieu-en-Bugey'},
	{   '','LFYG','Cambrai-Niergnies Airport','Cambrai'},
	{   '','LFYK','RCAF Station Marville','RCAF Station Marville'},
	{   '','LFYR','Romorantin - Pruniers Air Detachment','Romorantin'},
	{   '','LFYT','Saint-Simon – Clastres Air Base','Saint-Quentin'},
	{'EAP','LSZM, LFSB','EuroAirport Basel Mulhouse Freiburg','Basel, Freiburg im Breisgau, Mulhouse'},
	{'FUT','NLWF','Pointe Vele Airport','Vele, Wallis and Futuna'},
	{'WLS','NLWW','Hihifo Airport','Mala\'e'},
	{'PPT','NTAA','Fa\'a\'ā International Airport','Tahiti'},
	{'RMT','NTAM','Rimatara Airport','Rimatara'},
	{'RUR','NTAR','Rurutu Airport','Rurutu'},
	{'TUB','NTAT','Tubuai – Mataura Airport','Tubuai'},
	{'RVV','NTAV','Raivavae Airport','Raivavae'},
	{'AAA','NTGA','Anaa Airport','Anaa'},
	{'FGU','NTGB','Fangatau Airport','Fangatau'},
	{'TIH','NTGC','Tikehau Airport','Tikehau'},
	{'APK','NTGD','Apataki Airport','Apataki'},
	{'REA','NTGE','Reao Airport','Reao'},
	{'FAV','NTGF','Fakarava Airport','Fakarava'},
	{'HHZ','NTGH','Hikueru Airport','Hikueru'},
	{'XMH','NTGI','Manihi Airport','Manihi'},
	{'GMR','NTGJ','Totegegie Airport','Gambier Islands'},
	{'KKR','NTGK','Kaukura Airport','Kaukura'},
	{'NAU','NTGN','Napuka Airport','Napuka'},
	{'TKV','NTGO','Tatakoto Airport','Tatakoto'},
	{'PKP','NTGP','Puka-Puka Airport','Puka-Puka'},
	{'PUK','NTGQ','Pukarua Airport','Pukarua'},
	{'NUK','NTGW','Nukutavake Airport','Nukutavake'},
	{'ZTA','NTGY','Tureia Airport','Tureia'},
	{'AHE','NTHE','Ahe Airport','Ahe'},
	{'FAC','NTKF','Faaite Airport','Faaite'},
	{'NIU','NTKN','Niau Airport','Niau'},
	{'RRR','NTKO','Raroia Airport','Raroia'},
	{'TKX','NTKR','Takaroa Airport','Takaroa'},
	{'AUQ','NTMN','Atuona Airport','Atuona'},
	{'BOB','NTTB','Bora Bora Airport','Bora Bora'},
	{'RGI','NTTG','Rangiroa Airport','Rangiroa'},
	{'HUH','NTTH','Huahine – Fare Airport','Huahine – Fare'},
	{'MOZ','NTTM','Moorea Airport','Moorea'},
	{'HOI','NTTO','Hao Airport','Hao'},
	{'MAU','NTTP','Maupiti Airport','Maupiti'},
	{'RFP','NTTR','Raiatea Airport','Raiatea'},
	{'VHZ','NTUV','Vahitahi Airport','Vahitahi'},
	{'TGJ','NWWA','Tiga Airport','Tiga Island'},
	{'BMY','NWWC','Île Art – Waala Airport','Belep'},
	{'KNQ','NWWD','Koné Airport','Koné'},
	{'ILP','NWWE','Île des Pins Airport','Isle of Pines'},
	{'KOC','NWWK','Koumac Airport','Koumac'},
	{'LIF','NWWL','Ouanaham Airport','Lifou'},
	{'GEA','NWWM','Nouméa Magenta Airport','Nouméa'},
	{'MEE','NWWR','Maré Airport','Maré'},
	{   '','NWWT','La Foa – Oua Tom Airport','La Foa – Oua Tom'},
	{'TOU','NWWU','Touho Airport','Touho'},
	{'UVE','NWWV','Ouvéa Airport','Ouvéa'},
	{'NOU','NWWW','La Tontouta International Airport','Nouméa'},
	{   '','NWWX','Canala Airport','Canala'},
	{'CAY','SOCA','Cayenne – Félix Eboué Airport','Cayenne'},
	{'GSI','SOGS','Grand-Santi Airport','Grand-Santi'},
	{'MPY','SOOA','Maripasoula Airport','Maripasoula'},
	{'OYP','SOOG','Saint-Georges-de-l\'Oyapock Airport','Saint-Georges'},
	{'LDX','SOOM','Saint-Laurent-du-Maroni Airport','Saint-Laurent-du-Maroni'},
	{'REI','SOOR','Régina Airport','Régina'},
	{'XAU','SOOS','Saül Airport','Saül'},
	{   '','SOOY','Sinnamary Airport','Sinnamary'},
	{'DSD','TFFA','La Désirade Airport','La Désirade'},
	{'BBR','TFFB','Baillif Airport','Basse-Terre'},
	{'SFC','TFFC','Saint-François Airport','Saint-François'},
	{'FDF','TFFF','Martinique Aimé Césaire International Airport','Fort-de-France'},
	{'SFG','TFFG','Grand Case-Espérance Airport','Saint Martin'},
	{'SBH','TFFJ','Gustaf III Airport','Saint-Barthélemy'},
	{'GBJ','TFFM','Marie-Galante Airport','Grand-Bourg'},
	{'PTP','TFFR','Pointe-à-Pitre International Airport','Pointe-à-Pitre'},
	{'LSS','TFFS','Les Saintes Airport','Terre-de-Haut'},
	{   '','','Kourou Airport','Kourou'},
	{   '','','Ouanary Airport','Ouanary'},

-- and so on
}

p.IATA = {}
p.ICAO = {}
p.WikiName = {}
for k, v in ipairs(p.codetbl) do
	if '' ~= v[1] then		-- if iata code is defined for this airport
		p.IATA[v[1]] = v[3]
		p.WikiName[v[1]] = v[4]
	end
	if '' ~= v[2] then		-- if icao code is defined for this airport
		p.ICAO[v[2]] = v[3]
		p.WikiName[v[2]] = v[4]
	end
end

return p