-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpcn_primus_download_trans.ado
155 lines (118 loc) · 3.98 KB
/
pcn_primus_download_trans.ado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*==================================================
project: Download pending databases from PRIMUS
Author: R.Andres Castaneda
E-email: [email protected]
url:
Dependencies: The World Bank
----------------------------------------------------
Creation Date: 29 Jul 2019 - 16:01:01
Modification Date:
Do-file version: 01
References:
Output:
==================================================*/
/*==================================================
0: Program set up
==================================================*/
program define pcn_primus_download_trans, rclass
syntax [anything(name=subcmd id="subcommand")], ///
[ ///
COUNtries(string) ///
Years(numlist) ///
DIR(string) ///
REGions(string) ///
status(string) ///
wkyr(string) ///
meeting(string) ///
date_time(string) ///
replace ///
clear ///
pause ///
]
version 14
/*==================================================
downloading transaction_id from primus
==================================================*/
qui {
pcn_primus_query, countries(`countries') years(`years') ///
`pause' status(`status')
if ("`meeting'" == "SM") {
local filtdate = "`=`wkyr'-1'-11" // filter date (december last year)
}
else {
local filtdate = "`=`wkyr''-05" // filter date (december last year)
}
tempvar fd
gen double `fd' = clock(datetime, "DMY hms")
keep if `fd' >= clock("`filtdate'", "YM")
ds
local varlist = "`r(varlist)'"
local n = _N
if (`n' == 0) {
noi disp as error "There is no `status' data in PRIMUS for the combination of " ///
"country/years selected"
error
}
//========================================================
// check if transaction IDs have changed
//========================================================
cap mkdir "`dir'/`wkyr'_`meeting'"
cap mkdir "`dir'/`wkyr'_`meeting'/vintage"
local dirname "`dir'/`wkyr'_`meeting'/vintage"
cap mkdir "`dirname'"
cap noi datasignature confirm using "`dirname'/`wkyr'_`meeting'"
if (_rc == 601) { // file not found
qui datasignature set, reset saving("`dirname'/`wkyr'_`meeting'", replace)
save "`dirname'/`wkyr'_`meeting'.dta", replace
save "`dirname'/`wkyr'_`meeting'_`date_time'.dta", replace
noi di as text "Data signature not found"
noi di as result "Data signature created"
local change = "Real Change"
}
else if (_rc ==9) {
local files: dir "`dirname'" files "`wkyr'_`meeting'_*.dta", respectcase
local vers = 0
foreach file of local files {
if regexm("`file'", "`wkyr'_`meeting'_([0-9]+)\.dta") {
local ver = regexs(1)
local vers "`vers' `ver'"
}
}
local vers: subinstr local vers " " ",", all
local ver = max(`vers')
datasignature set, reset saving("`dirname'/`wkyr'_`meeting'", replace)
save "`dirname'/`wkyr'_`meeting'.dta", replace
save "`dirname'/`wkyr'_`meeting'_`date_time'.dta", replace
//------------Changes in the data
merge 1:1 survey_id using "`dirname'/`wkyr'_`meeting'_`ver'.dta", /*
*/ keep(master) nogen
pause after merge
local change = "Real Change"
}
else {
noi disp in y "File `wkyr'_`meeting' has not changed since last time"
if ("`replace'" == ""){
local change = "No Change"
return local change = "`change'"
exit
}
else local change = "Replace"
}
return local change = "`change'"
noi di as result "Transactions have been correctly downloaded"
noi di as text "at: `dirname'/`wkyr'_`meeting'.dta"
}
end
/*====================================================================
Mata functions
====================================================================*/
findfile "pcn_functions.mata"
include "`r(fn)'"
exit
/* End of do-file */
><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><
Notes:
1.
2.
3.
Version Control: