clear
set more off

forvalues i = 2009(1)2013{ // We don't care about post-2013. Also: different format for 2017 and 2018 files
import delimited "text_`i'.txt", encoding(utf8) delimiters(";") clear

* Merge all variables into a single one
gen a =  ""
foreach var of varlist v*{
replace a = a + " " + `var'
drop `var'
}
gen year = "`i'"
replace a = stritrim(strtrim(a))
save tmp_`i', replace
}

clear
gen a = ""

forvalues i = 2009(1)2013{
append using tmp_`i'
erase tmp_`i'.dta
}


* Remove useless text
foreach expression in "LA PRESENTE DECLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ETABLIE SOUS LA RESPONSABILITE EXCLUSIVE DU DECLARANT ." ///
					"LA PRÉSENTE DÉCLARATION N™A PAS FAIT L™OBJET D™UN CONTRÔLE DE L™AMF ET EST ÉTABLIE SOUS LA RESPONSABILITÉ EXCLUSIVE DU DÉCLARANT ." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biai s de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données nécessaires au traitement des courriers reçus par l™AMF sont enregistrées dans un fichier informatisé réservé à son usage exclusif pour l™a ccomplissement de ses missions. Les personnes physiques concernées peuvent exercer leur droit d™accès aux données et, le cas échéant, les faire rectifier en s™adressant à la Direction des Émetteurs de l'AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichie rs et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnesphysiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données nécessaires au traitement des courriers reçus par l™AMF sont enregistrées dans un fichier informatisé réservé à son usage exclusif pour l™a ccomplissement de ses missions. Les personnes physiquesconcernées peuvent exercer leur droit d™accès aux données et, le cas échéant, les faire rectifier en s™adressant à la Direction des Émetteurs de l'AMF." ///
					"Les données à caractère personnel collectées par le biai s de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnesphysiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"suite à erreur dans la déclaration reçue" ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichiers et aux libertés, les per sonnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Dirction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un trai tement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la lo i n° 78-17 du 6 janvier 1978 relative à l™informatique, aux f ichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire recti fier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel co llectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Confor mément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichier s et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adre ssant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier1978 relative à l™informatique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique, aux fichiers et aux libertés, les pers onnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éché ant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éché ant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce form ulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique, aux fichiers et aux libertés, les pers onnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éché ant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique, aux fichiers et aux libertés, les per sonnes physiques concer nées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"LA PRESENTE NOTIFICATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ETABLIESOUS LA RESPONSABILITE EXCLUSIVE DU DECLARANT." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifie r en s™adressant à la Direction des émetteurs à l™AMF." ///
					" LA PRÉSENTE DÉCLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ÉTABLIE SOUS LA RESPONSABILITÉ EXCLUSIVE DU DÉCLARANT ." ///
					"LA PRESENTE DECLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET ESTETABLIE SOUS LA RESPONSABILITE EXCLUSIVE DU DECLARANT.Déclaration individuelle relative aux opérations des personnesmentionnées à l™article L.621-18-2 du Code monétaire et financier sur les titres de la société" ///
					"LA PRESENTE DECLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ETABLIE SOUS LA RESPONSABILITE EXCLUSIVE DU DECLARANT. Déclaration individuelle relative aux opérations des personnes mentionnées à l™article L.621-18-2 du Code monétaire et financier sur les titres de la société" ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usageexclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique,aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, lesfaire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					" LA PRESENTE DECLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ETABLIE SOUS LA RESPONSABILITE EXCLUSIVE DU DECLARANT." ///
					"Le s donnée s à caractèr e personne l collectée s par le biai s de ce formulair e fon t l™obje t d™u n traitemen t informatiqu e réserv é à l™usage exclusi f de l™AM F pou r l™accomplissemen t de se s missions . Conformémen t à la loi n° 78-17 du 6 janvie r 197 8 relativ e à l™informatique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éc héant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Déclaration individuelle relative aux opérations des personnes mentionnées à l™article L.621-18-2 du Code monétaire et financier sur les titres de la société" ///
					"Déclaration individuelle relative aux opérations des personnes mentionnées à l™article L. 621-18-2 du code monétaire et financier sur les titres de la société" ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique, aux fichiers et aux libertés, les pers onnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éché ant, les faire rectifier en s™adressant à la Direction des émetteurs à l™AMF." ///
					"Déclaration individuelle relative aux opérations des personnes mentionnées à l™article L.621-18-2 du Code monéta ire et financier sur les titres de la société" ///
					"Déclaration individuelle relati ve aux opérations des personnes mentionnées à l™article L. 621-18-2 du code monétair e et financier sur les titres de la société" ///
					"Déclaration individuelle relative aux opérations des personnes mentionnées à l™article L.621-18-2 du code monétaire et financier sur les titres de la société" ///
					"La présente déclaration n™a pas fait l™objet d™un cont rôle de l™AMF et est établie sous le responsabilité du déclarant" ///
					"LA PRESENTE DECLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ETABLIE SOUS LA RESPONSABILITE EXCLUSIVE DU DÉCLARANT" ///
					"LA PRESENTE DECLARATION N™A PAS FAIT L™OBJET D™UN CONTROLE DE L™AMF ET EST ETABLIE SOUS LA RESPONSABILITÉ EXCLUSIVE DU DECLARANT" ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des émetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions . Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exerce r leur droit d™accès aux données , et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des émetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique,aux fichiers et aux libertés, les pers onnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éché ant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biai s de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès a ?ux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biai s de ce formulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informat ique, aux fichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accè s aux données, et le cas échéant, les faire rectifier en s™adressant à la Direction des émetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux f ichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire recti fier en s™adressant à la Direction des Emetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformé ment à la loi n° 78-17 du 6 janvier 1978 relative à l™informa tique,aux fichiers et aux libertés, les pers onnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas éché ant, les faire rectifier en s™adressant à la Direction des émetteurs à l™AMF." ///
					"Les données à caractère personnel collectées par le biais de ce fo rmulaire font l™objet d™un traitement informatique réservé à l™usage exclusif de l™AMF pour l™accomplissement de ses missions. Conformément à la loi n° 78-17 du 6 janvier 1978 relative à l™informatique, aux f ichiers et aux libertés, les personnes physiques concernées peuvent exercer leur droit d™accès aux données, et le cas échéant, les faire recti fier en s™adressant à la Direction des émetteurs à l™AMF."{
					
		replace a = subinstr(a,"`expression'","",1)
	}
*

egen filename = ends(a), punct("END_FILENAME") head
egen b = ends(a), punct("END_FILENAME") tail
drop a
ren b a

replace filename = subinstr(upper(filename),".PDF",".pdf",1)
replace filename = subinstr(filename,"DOC","",1)

***************************************************************************************************************
* Files that start with "DD" have a different layout, let's ignore them (mostly post-May 2013)
preserve
keep if regexm(filename,"DD")
restore
drop if regexm(filename,"DD")
***************************************************************************************************************

drop if regexm(a,"est annulée") // Drop cancelled documents [Visual check]
drop if inlist(filename,"209D2209.pdf","209D2208.pdf","209D1011.pdf","211D0247.pdf","210D4321.pdf","212D3100.pdf","212D1830.pdf")

drop if inlist(filename,"210D2025.pdf","210D2026.pdf","210D3800.pdf") // 3 documents that contain no information (links to other documents)

egen header = ends(a), punct("INFORMATION") head
egen b = ends(a), punct("INFORMATION") tail
drop a
ren b a

replace header = "209D4044 NL0000400653-DD4044 10 juillet 2009" if filename == "209D4044.pdf"
replace a = subinstr(a,"209D4044 NL0000400653-DD4044 10 juillet 2009","",1) if filename == "209D4044.pdf"
replace header = "210D1169 FR0010397760-DD1169 22 mars 2010" if filename == "210D1169.pdf"
replace header = subinstr(header," FR "," ",1)

* Line 110 : 1 anonymised correction

* Extracting correction information
**************************************************************************
**************************************************************************

* Special case where the heading information of some document has been passed to the next ones
replace a = subinstr(a,"209D1173 du 27/2/2009 ANNULEE ET REMPLACE PAR INFORMATION 209D4410","",1) if inlist(filename,"209D4411.pdf","209D4412.pdf","209D4413.pdf","209D4414.pdf","209D4415.pdf","209D4416.pdf","209D4417.pdf")

gen flag1 = strpos(lower(a),"annule et remplace") + length("annule et remplace") if regexm(a,"annule")
gen flag2 = ustrpos(lower(a),"publi",flag1) + length("publi") if regexm(a,"annule")

gen correction = substr(a,flag1,flag2-flag1) if regexm(a,"annule")

replace correction = "208D4203" if filename == "209D0821.pdf"
replace correction = "208D3642" if filename == "209D0925.pdf"
replace correction = "212D4503" if filename == "212D4637.pdf"

replace correction = subinstr(correction,"l™Information","",1)
replace correction = subinstr(correction,"L™INFORMATION","",1)
replace correction = subinstr(correction,"l™information","",1)
replace correction = subinstr(correction,"par","",1)
replace correction = subinstr(correction,"pub","",1)
replace correction = subinstr(correction,"p","",1)
replace correction = subinstr(correction,"les Informations","",1)
 
replace correction = stritrim(strtrim(correction))

drop flag*

gen flag1 = strpos(lower(a),"annulé") if regexm(a,"annulé")
replace correction = substr(a,1,flag1) if regexm(a,"annulé")

replace correction = subinstr(correction,"INFORMATION","",1)
replace correction = subinstr(correction,"a","",1)

replace correction = "208D3539" if filename == "209D0073.pdf"
replace correction = "207D6051" if filename == "209D2162.pdf"
replace correction = "209D2147" if filename == "209D2206.pdf"
replace correction = "209D2148" if filename == "209D2207.pdf"
replace correction = "209D4344" if filename == "209D4360.pdf"
replace correction = "209D1173" if filename == "209D4410.pdf"
replace correction = "209D4917" if filename == "209D5499.pdf"
replace correction = "210D0468" if filename == "210D1480.pdf"
replace correction = "210D0758" if filename == "210D1110.pdf"
replace correction = "210D1192" if filename == "210D1380.pdf"
replace correction = "209D0908" if filename == "209D1011.pdf"

replace correction = stritrim(strtrim(correction))

drop flag*

gen flag1 = strpos(a,subinstr(filename,".pdf","",1)) + length(subinstr(filename,".pdf","",1)) if correction != ""
gen flag2 = strpos(a,correction) + length(correction) if correction != ""
gen flag3 = max(flag1,flag2) if correction != ""
replace flag3 = max(strpos(a,year),strpos(a,strofreal(real(year)-1))) + length(year) if correction != "" & regexm(lower(a),"publiée")
replace flag3 = strpos(a,"2011") + 4 if correction != "" & regexm(lower(a),"publiée") & (inlist(filename,"211D0381.pdf","212D0228.pdf","212D0243.pdf","212D0244.pdf","212D0245.pdf") | inlist(filename,"212D0246.pdf","212D0247.pdf","212D0248.pdf","212D0249.pdf","212D0250.pdf","212D0251.pdf","212D0252.pdf","212D0482.pdf","212D0483.pdf"))
replace flag3 = strpos(a,"2012") + 4 if correction != "" & regexm(lower(a),"publiée") & (inlist(filename,"213D0053.pdf","213D0232.pdf"))

replace flag3 = strpos(a,"2010") + length("2010") if inlist(filename,"210D1380.pdf","210D1480.pdf")

replace a = substr(a,flag3,.) if correction != ""

drop flag*

drop if regexm(a,"ANNULEE ET REMPLACEE")  // Drop cancelled documents [Visual check]

preserve
keep if regexm(a,"ANNULE")

gen flag1 = strpos(a,"ANNULE") + length("ANNULE") if regexm(a,"ANNULE")
replace a = subinstr(a,"Information","INFORMATION",2) if flag1 != .
gen flag2 = ustrpos(a,"INFORMATION",flag1) + length("INFORMATION")  if regexm(a,"ANNULE")
replace a = subinstr(a,"publiée","PUBLIEE",1) if flag1 != .
gen flag3 = ustrpos(a,"PUBLIEE",flag2) + length("PUBLIEE") if flag1 != .
replace correction = substr(a,flag2,flag3-flag2) if flag2 != 0 & flag3 != 0 & flag3 > flag2

replace correction = subinstr(correction,"TION","",1)
replace correction = subinstr(correction,"PUB","",1)
replace correction = subinstr(correction,"ON","",1)
replace correction = subinstr(correction,"LI","",1)
replace correction = stritrim(strtrim(correction))

replace correction = "209D1614" if filename == "209D2023.pdf"
replace correction = "209D2064" if filename == "209D2135.pdf" | filename == "209D2255.pdf"
replace correction = "209D3080" if filename == "209D3165.pdf"
replace correction = "209D3721" if filename == "209D3848.pdf"
replace correction = "210D0758" if filename == "210D1111.pdf" | filename == "210D1112.pdf"
replace correction = "211D0247" if filename == "211D1199.pdf" | filename == "211D1200.pdf" | filename == "211D1207.pdf"

drop flag*
gen flag1 = strpos(a,subinstr(filename,".pdf","",1)) + length(subinstr(filename,".pdf","",1)) if correction != ""
gen flag2 = strpos(a,correction) + length(correction) if correction != ""
gen flag3 = max(flag1,flag2) if correction != ""
replace flag3 = max(strpos(a,year),strpos(a,strofreal(real(year)-1))) + length(year) if correction != "" & regexm(a,"PUBLIEE")
replace flag3 = strpos(a,"ANNULEE") + length("ANNULEE") if inlist(filename,"209D2023.pdf","211D1199.pdf","211D1200.pdf","211D1207.pdf")
replace flag3 = strpos(a,"2009") + length("2009") if filename == "209D3165.pdf" | filename == "209D3848.pdf"
replace flag3 = strpos(a,"2010") + length("2010") if inlist(filename,"211D0170.pdf","211D1475.pdf","211D1476.pdf","211D1727.pdf","211D1728.pdf","211D1729.pdf")

replace a = substr(a,flag3,.) if correction != ""
drop flag*
tempfile tmp1
save `tmp1', replace
restore

drop if regexm(a,"ANNULE")
append using `tmp1'

replace a = subinstr(a,"Déclaration modifiée","",1)

**************************************************************************
**************************************************************************

egen company_name = ends(a), punct("DECLARANT") head
egen b = ends(a), punct("DECLARANT") tail
drop a
ren b a
replace company_name = subinstr(company_name,"INFORMATION","",1)

egen people = ends(a), punct("INSTRUMENT FINANCIER") head
egen b = ends(a), punct("INSTRUMENT FINANCIER") tail
drop a
ren b a

egen instrument = ends(a), punct("NATURE DE L™OPÉRATION") head
egen b = ends(a), punct("NATURE DE L™OPÉRATION") tail
drop a
ren b a

replace a = subinstr(a,"DATE DE L™OPERATION","DATE DE L™OPÉRATION",1)
egen operation = ends(a), punct("DATE DE L™OPÉRATION") head
egen b = ends(a), punct("DATE DE L™OPÉRATION") tail
drop a
ren b a

egen transactiondate = ends(a), punct("DATE DE RECEPTION DE LA DECLARATION") head
egen b = ends(a), punct("DATE DE RECEPTION DE LA DECLARATION") tail
drop a
ren b a

replace a = subinstr(a,"LIEU DE L™OPERATION","LIEU DE L™OPÉRATION",1)
egen receptiondate = ends(a), punct("LIEU DE L™OPÉRATION") head
egen b = ends(a), punct("LIEU DE L™OPÉRATION") tail
drop a
ren b a

egen market = ends(a), punct("PRIX UNITAIRE") head
egen b = ends(a), punct("PRIX UNITAIRE") tail
drop a
ren b a

replace a = subinstr(a,"MONTANT DE L™OPERATION","MONTANT DE L™OPÉRATION",1)
egen price = ends(a), punct("MONTANT DE L™OPÉRATION") head
egen b = ends(a), punct("MONTANT DE L™OPÉRATION") tail
drop a
ren b a

ren a amount

keep filename header correction company_name people instrument operation transactiondate* receptiondate market price* amount*

* Variable: market
replace market = stritrim(strtrim(subinstr(market,":","",.)))
replace market = "Alternext" if regexm(lower(market),"alternext")
replace market = "Euronext Paris" if regexm(lower(market),"paris") | regexm(lower(market),"eurolist") | lower(market) == "euronext"
replace market = "Bourse du Luxembourg" if regexm(lower(market),"luxembourg")
replace market = "London Stock Exchange" if regexm(lower(market),"london") | regexm(lower(market),"londres")
replace market = "New York Stock Exchange" if regexm(lower(market),"nyse") | regexm(lower(market),"york")
replace market = "Hors marché" if regexm(lower(market),"hors marché") | regexm(lower(market),"gré") | regexm(lower(market),"tradegate")
replace market = "Euronext Amsterdam" if regexm(lower(market),"amsterdam")
replace market = "Euronext Bruxelles" if regexm(lower(market),"bruxelles")
replace market = "Bourse de Zurich" if regexm(lower(market),"zurich")
replace market = "Xetra Frankfurt" if regexm(lower(market),"xetra")
replace market = "" if regexm(lower(market),"applicable")
replace market = "New York Stock Exchange" if regexm(lower(market),"etats")
replace market = "Frankfurt Stock Exchange" if regexm(lower(market),"francfort")
replace market = "Bourse de Valence" if market == "Valence"
tab market

* Variable: currency
gen currency = "USD" if (regexm(price,"\\$") | regexm(price,"USD"))
replace currency = "EUR" if currency == "" & (regexm(price,"•") | regexm(amount,"•")) 
replace currency = "CHF" if (regexm(price,"CH") | regexm(amount,"CH")) & currency == ""
replace currency = "MAD" if (regexm(price,"MAD") | regexm(price,"Dh")) & currency == ""
replace currency = "GBP" if regexm(price,"£")
replace currency = "CZK" if (regexm(price,"CZK") | regexm(amount,"CZK")) & currency == ""
replace currency = "EUR" if filename == "209D6707.pdf"

count if currency == "" // Should return 0, except special cases (exchange of stocks etc.)

* Variable: instrument
replace instrument = "Actions" if regexm(lower(instrument),"action") & ~regexm(lower(instrument),"autres")
replace instrument = "Autre" if instrument != "Actions"

* Variable: operation
replace operation = stritrim(strtrim(subinstr(operation,":","",.)))

replace operation = "Autre" if regexm(lower(operation),"autres types")
replace operation = "Autre" if regexm(lower(operation),"option")
replace operation = "Autre" if regexm(lower(operation),"suite à fusion par absorption")
replace operation = "Autre" if regexm(lower(operation),"l'offre publique d'achat")
replace operation = "Autre" if regexm(lower(operation),"augmentation de capital")

replace operation = "Acquisition" if regexm(lower(operation),"acquisition") | regexm(lower(operation),"achat") | operation == "Acquittion" | operation == "Acqusition"
replace operation = "Souscription" if regexm(lower(operation),"souscriptio")
replace operation = "Echange" if regexm(lower(operation),"echange") | regexm(lower(operation),"échange") | operation == "Échange" | regexm(lower(operation),"transfert")
replace operation = "Cession" if regexm(lower(operation),"cession") | regexm(lower(operation),"vente") | regexm(lower(operation),"cesssion")
replace operation = "Distribution" if regexm(lower(operation),"attribution") | regexm(lower(operation),"distribution")
replace operation = "Acquisition" if regexm(lower(operation),"apport")
replace operation = "Autre" if regexm(lower(operation),"prêt")
replace operation = "Autre" if regexm(lower(operation),"résiliation") | regexm(lower(operation),"remboursement") | regexm(lower(operation),"couverture") | regexm(lower(operation),"exercice")
replace operation = "Cession" if regexm(lower(operation),"donation")
replace operation = "Autre" if ~inlist(operation,"Acquisition","Cession","Distribution","Echange","Souscription")

* Variable: price
foreach expression in ":" "•" "$" "USD" "US" "MAD" "Dh" "CHF" "CZK" "£"{
foreach var of varlist price*{
replace `var' = subinstr(`var',"`expression'","",.)
}
}

replace price = "128,46" if filename == "213D1861.pdf"
gen price_2 = "103,62" if filename == "213D1861.pdf"
gen price_3 = "79,08" if filename == "213D1861.pdf"
replace price = "199,656" if filename == "213D1870.pdf"
replace price_2 = "200,1631" if filename == "213D1870.pdf"

foreach var of varlist price*{
gen `var'_num = real(subinstr(subinstr(`var'," ","",.),",",".",.))
drop `var'
ren `var'_num `var'
}
ren price price_1

* Variable: amount
foreach var of varlist amount*{
foreach expression in ":" "•" "$" "US" "ç" "MAD" "Dh" "CHF" "CH" "CZK" "D" "£"{
replace `var' = subinstr(`var',"`expression'","",.)
}
replace `var' = subinstr(`var',`"""',"",.)
}

replace amount = "85 610" if filename == "209D1821.pdf"
replace amount = "8 613 071" if filename == "210D3686.pdf"
replace amount = "59 325 000" if filename == "211D3543.pdf"
replace amount = "292928,8" if filename == "212D0849.pdf"
replace amount = "3612,80" if filename == "212D0852.pdf"
replace amount = "332 500" if filename == "212D1302.pdf"
replace amount = "199 999,80" if filename == "212D2150.pdf"
replace amount = "1 777,60" if filename == "212D3857.pdf"
gen amount_2 = "1 911,40" if filename == "212D3857.pdf"
replace amount = "16 167,02" if filename == "212D4004.pdf"
replace amount_2 ="6 644,73" if filename == "212D4004.pdf"
replace amount = "263,78" if filename == "212D4722.pdf"
replace amount = "1 055,12" if filename == "212D4723.pdf"
replace amount = "1 318,90" if filename == "212D4724.pdf"
replace amount = "3 956,70" if filename == "212D4805.pdf"
replace amount = "1 318,90" if filename == "212D4916.pdf"
replace amount = "1 055,12" if filename == "212D4917.pdf"
replace amount = "2 110,24" if filename == "212D4966.pdf"
replace amount = "1000000" if filename == "213D0417.pdf"
replace amount = "1000000" if filename == "213D0508.pdf"
replace amount = "202 250,09" if filename == "213D0716.pdf"
replace amount = "177 363,80" if filename == "213D0718.pdf"
replace amount = "67 036,70" if filename == "213D0719.pdf"
replace amount = "21 768,50" if filename == "213D0720.pdf"
replace amount = "1000" if filename == "213D1335.pdf"
replace amount = "1000" if filename == "213D1336.pdf"
replace amount = "1000" if filename == "213D1337.pdf"
replace amount = "1 130 704,92" if filename == "213D1861.pdf"
replace amount_2 = "1 824 022,86" if filename == "213D1861.pdf"
gen amount_3 = "1 193 159,04" if filename == "213D1861.pdf"
replace amount = "1 078 142,40" if filename == "213D1870.pdf"
replace amount_2 = "520 424,06" if filename == "213D1870.pdf"
replace amount = "111 088,02" if filename == "213D1888.pdf"

foreach var of varlist amount*{
gen `var'_num = real(subinstr(subinstr(`var'," ","",.),",",".",.))
drop `var'
ren `var'_num `var'
}
ren amount amount_1

* Variable: correction
replace correction = stritrim(strtrim(correction))

* Variable: company_name
replace company = stritrim(strtrim(company_name))
replace company = subinstr(company,`"™"',"'",.)
replace company = subinstr(company,".","",1) if substr(company,1,1) == "."
replace company = stritrim(strtrim(company_name))

* Variables: datereleased isin id_doc
replace header = stritrim(strtrim(header))
replace header = subinstr(header,"Œ","-",1)
egen id_doc = ends(header), punct(" ") head
egen a = ends(header), punct(" ") tail

drop if id_doc == "ANNULE" // 10 cancelled documents

replace a = subinstr(a,"- ","-",1)
replace a = subinstr(a," -","-",1)

replace a = "DD1341-9 mars 2009" if filename == "209D1341.pdf"
replace a = "DD1342-9 mars 2009" if filename == "209D1342.pdf"
replace a = "DD1343-9 mars 2009" if filename == "209D1343.pdf"
replace a = "DD1344-9 mars 2009" if filename == "209D1344.pdf"
replace a = "DD1345-9 mars 2009" if filename == "209D1345.pdf"
replace a = "DD2648-15 mai 2009" if filename == "209D2648.pdf"
replace a = "DD0341-20 janvier 2010" if filename == "210D0341.pdf"

egen isin = ends(a) if regexm(a,"-"), punct("-") head
egen datereleased = ends(a), punct(" ") tail
drop a
replace datereleased = stritrim(strtrim(lower(datereleased)))

replace isin = "" if substr(isin,1,2) == "DD" // Documents without ISIN

* Variables: transactiondate_1 receptiondate transactiondate_2 transactiondate_3
foreach var of varlist transactiondate receptiondate{
replace `var' = stritrim(strtrim(subinstr(`var',":","",.)))
}

replace operation = "Régularisation" if regexm(transactiondate,"Régularisation") | transactiondate == "" // No transactiondate for these 14 documents
replace transactiondate = "" if regexm(transactiondate,"Régularisation")

replace transactiondate = "20 février 2013" if filename == "213D0864.pdf"
replace transactiondate = "3 décembre 2010" if filename == "210D5763.pdf"
replace transactiondate = "3 décembre 2010" if filename == "210D5764.pdf"
replace transactiondate = "16 octobre 2009" if filename == "210D0832.pdf"
replace transactiondate = "10 septembre 2010" if filename == "210D4549.pdf"

ren transactiondate transactiondate_1

* Variables: people_ status_ linked declarant

replace people = subinstr(people,"li ée"," liée",1)
replace people = subinstr(people,"liée au"," liée à",1)
replace people = subinstr(people,"liées à"," liée à",1)
replace people = subinstr(people,"lié à"," liée à",1)
replace people = subinstr(people,"lié ","liée ",1)
replace people = subinstr(people,"et personne physique liée "," ",1)
replace people = subinstr(people,"liée ","liée à",1) if regexm(people,"liée") & ~regexm(people,"liée à")

gen linked = regexm(people,"liée à")
gen declarant = 1 - linked
tab linked declarant // Diagonal must be 0-0

egen link = ends(people) if regexm(people,"liée à"), punct("liée à") head
egen temp = ends(people) if regexm(people,"liée à"), punct("liée à") tail
replace people = temp if temp != ""

replace people = stritrim(strtrim(subinstr(people,":","",.)))

replace people = subinstr(people," - ",", ",.)

********************************************************************************
* Lines 466 to 488
* 23 anonymised corrections
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
********************************************************************************

egen people_1 = ends(people), punct(",") head
egen b = ends(people), punct(",") tail
egen status_1 = ends(b), punct(",") head
egen c = ends(b), punct(",") tail

replace people_1 = "FCPI BANQUE POPULAIRE INNOVATION 3" if regexm(people,"INNOVATION 3")

forvalues i = 2(1)6{
gen people_`i' = ""
gen status_`i' = ""
}

********************************************************************************
* Lines 502 to 788
* 260 anonymised corrections
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
replace c = "" if people_2 != ""

egen a1 = ends(c), punct(",") head
egen k  = ends(c), punct(",") tail
egen a2 = ends(k), punct(",") head
egen m = ends(k), punct(",") tail
egen a3 = ends(m), punct(",") head
egen n = ends(m), punct(",") tail
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
********************************************************************************

forvalues i = 2(1)6{
local j = `i' - 1 
replace status_`i' = status_`j' if status_`i' == "" & status_`j' != "" & people_`i' != ""
}

foreach var of varlist status_*{
ren `var' a
replace a = "Président Directeur général" if (regexm(lower(a),"prés") & (regexm(lower(a),"général") | regexm(lower(a),"énér"))) | (regexm(lower(a),"chairman") & regexm(lower(a),"execu"))
replace a = "Directeur général" if (regexm(lower(a),"direc") & regexm(lower(a),"ral") & ~regexm(lower(a),"pré")) | (regexm(lower(a),"ecteur") & regexm(lower(a),"ral"))
replace a = "(Vice-)Président du directoire" if (regexm(lower(a),"pré") |regexm(lower(a),"ésident")) & regexm(lower(a),"irectoire")
replace a = "(Vice-)Président du Conseil de surveillance" if regexm(lower(a),"surveill") & regexm(lower(a),"prési")
replace a = "Membre du Conseil de surveillance" if regexm(lower(a),"surveill") & ~regexm(lower(a),"prési")
replace a = "Directeur" if ((regexm(lower(a),"directeur") | regexm(lower(a),"directrice")) & ~regexm(lower(a),"général")) | (regexm(lower(a),"ector") | (regexm(lower(a),"ecteur") & ~regexm(lower(a),"ral")))
replace a = "Membre du Conseil d'administration" if regexm(lower(a),"représentant")
replace a = "Membre du Conseil d'administration" if (regexm(lower(a),"memb") & regexm(lower(a),"admi")) | (regexm(lower(a),"admin") & regexm(lower(a),"teu")) | (regexm(lower(a),"administrate")) | (regexm(lower(a),"admnistrateur"))
replace a = "Membre du Directoire" if (regexm(lower(a),"memb") | regexm(lower(a),"mbre")) & regexm(lower(a),"oire")
replace a = "Membre du Conseil d'administration" if regexm(lower(a),"admi") & regexm(lower(a),"teur")
replace a = "Gérant" if regexm(lower(a),"gérant") | regexm(lower(a),"commandité")
replace a = "Dirigeant" if regexm(lower(a),"fonc") & regexm(lower(a),"rigeant")
replace a = "Président d'Honneur" if regexm(lower(a),"honneur")
replace a = "(Vice-)Président du Conseil d'administration" if regexm(lower(a),"prési") & regexm(lower(a),"admin")
replace a = "(Vice-)Président du Conseil d'administration" if regexm(lower(a),"chairman") | regexm(lower(a),"presi")
replace a = "Actionnaire" if regexm(lower(a),"action")
replace a = "Directeur général" if regexm(lower(a),"chief")
replace a = "Membre du Comité exécutif" if regexm(lower(a),"exé")
replace a = "Membre du Comité de direction" if regexm(lower(a),"ection") & ~regexm(lower(a),"collab")
replace a = "(Vice-)Président du Conseil d'administration" if (regexm(lower(a),"senior")) | (regexm(lower(a),"sident") & ~regexm(lower(a),"conseil") & ~regexm(lower(a),"rect") & ~regexm(lower(a),"honneur"))
replace a = "Autre" if regexm(lower(a),"responsable") | regexm(lower(a),"auto") | regexm(lower(a),"collab") | regexm(lower(a),"conseiller") | regexm(lower(a),"ité des opéra") | regexm(lower(a),"tratrice") | regexm(lower(a),"chercheur") | regexm(lower(a),"cadre dirigeant")
replace a = "Censeur" if regexm(lower(a),"censeur") | regexm(lower(a),"ce nseur")
replace a = "Secrétaire Général" if regexm(lower(a),"secrétaire général")
replace a = "Membre du Comité stratégique" if regexm(lower(a),"gique")
replace a = "(Vice-)Président du Conseil d'administration" if (regexm(lower(a),"admin") & regexm(lower(a),"ési")) | regexm(lower(a),"evp klm") | regexm(lower(a),"svp")
replace a = "Membre du Comité stratégique" if regexm(lower(a),"mité") & regexm(lower(a),"groupe")
replace a = "Membre du Conseil d'administration" if regexm(lower(a),"ministrateur")
replace a = "Directeur" if regexm(lower(a),"ressources humaines") | regexm(lower(a),"manager of technology") | regexm(lower(a),"coo")
replace a = "Autre" if regexm(lower(a),"leadership") | regexm(lower(a),"scientifique")
replace a = "Membre du comité exécutif" if (regexm(lower(a),"executive") & regexm(lower(a),"committee")) | trim(a) == "Membre du Comité"
replace a = "Membre du Conseil d'administration" if trim(a) == "Membre du Conseil"
replace a = "Membre du Conseil de surveillance" if regexm(lower(a),"eillance") & substr(a,1,1) == " "
replace a = "Membre du Conseil de gérance" if regexm(lower(a),"gérance") & substr(a,1,1) == " "
replace a = "Membre du Conseil d'administration" if regexm(lower(a),"trésorier")
replace a = "(Vice-)Président du Conseil d'administration" if regexm(lower(a),"sident du conseil") & substr(a,1,1) == " "
replace a = "(Vice-)Président du Conseil d'administration" if regexm(lower(a),"evp") & substr(a,1,1) == " "
replace a = "Dirigeant" if regexm(lower(a),"dirigeant") | regexm(lower(a),"mandataire") | regexm(lower(a),"deputy cfo")
replace a = "Membre du Directoire" if regexm(lower(a),"directoi")
replace a = "Membre du Conseil de surveillance" if substr(a,1,1) == " " & regexm(lower(people),"surveillance")
replace a = "Membre du Conseil d'administration" if substr(a,1,1) == " " & regexm(lower(people),"administration")
replace a = "(Vice-)Président du Conseil d'administration" if regexm(lower(a),"vp product") & substr(a,1,1) == " "
replace a = " " if substr(a,1,1) == " " | regexm(lower(a),"filiale")
ren a `var'
}

* Order and reorganize variables
********************************

keep filename id_doc correction isin company_name declarant linked people_* status_* ///
	  receptiondate datereleased transactiondate_1 ///
	  instrument operation* market currency price_* amount_*

order filename id_doc correction isin company_name declarant linked people_* status_* ///
	  receptiondate datereleased transactiondate_1 ///
	  instrument operation market currency price_* amount_*

foreach var of varlist *{
capture confirm string var `var'
if _rc==0 {
replace `var' = stritrim(strtrim(`var'))
}
}

* Saving
********
compress
save "clean/temp_2009_2013", replace
