Advertisement
Guest User

Untitled

a guest
Mar 6th, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 44.22 KB | None | 0 0
  1. /*  Program for inserting updated/revised data  */
  2. /*  It drops data in shredstg.PVLMM and appends it with revised version */
  3.  
  4. Options Symbolgen;
  5. /*  Declare temporary library   */
  6. %global tmplib;
  7. %let tmplib=work;
  8.  
  9. /*  Macro for initializing empty datasets   */
  10. %macro init(dset=);
  11. proc sql;
  12.     drop table &dset.;
  13. quit;
  14.  
  15. data &dset.;
  16. length Indicator $20
  17.     Reporting_country $4
  18.     reporting_country_label $40
  19.     'EU / WB'n $3
  20.     Week_Starting 8
  21.     YEAR 8
  22.     Month 8
  23.     Week 8
  24.     nat_orig $10
  25.     Nationality_pers $10
  26.     nat_pers_label $40
  27.     Returning_country $10
  28.     returning_country_label $40
  29.     Ctry_return $10
  30.     Failed_Asy $4
  31.     Criminal_Sanction $4
  32.     FacSus $4
  33.     ProtReason $20
  34.     Bus 8
  35.     Van 8
  36.     Car 8
  37.     Airplane 8
  38.     Other 8
  39.     NA 8
  40.     Region $40
  41.     Total 8
  42.     Stolen 8
  43.     Lost 8
  44.     PassengerType $10
  45.     BorderSection $10
  46.     'Entry/Exit'n $6
  47.     Return_operation $16
  48.     file $40
  49. ;
  50. Indicator="QQQQQQQQQQQQQQQQQQQ";
  51. Reporting_country="QQQQ";
  52. reporting_country_label="QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ";
  53. 'EU / WB'n="QQQ";
  54. nat_orig="QQQQ";
  55. Nationality_pers="QQQQQQQQQQ";
  56. nat_pers_label="QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ";
  57. Returning_country="QQQQQQQQQQ";
  58. returning_country_label="QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ";
  59. Ctry_return="QQQQQQQQQQ";
  60. Failed_Asy="QQQQ";
  61. Criminal_Sanction="QQQQ";
  62. FacSUS="QQQQ";
  63. ProtReason="QQQQQQQQQQQQQQQQQQQQ";
  64. Region="QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ";
  65. PassengerType="QQQQQQQQQQ";
  66. BorderSection="QQQQQQQQQQ";
  67. 'Entry/Exit'n="QQQQQQ";
  68. Return_operation="QQQQQQQQQQQQQQQQ";
  69. file="QQQQQQQQQQQQQQQQQQQQ";
  70.  
  71. format Indicator $20.
  72.     Reporting_country $20.
  73.     reporting_country_label $40.
  74.     'EU / WB'n $3.
  75.     Week_Starting DATE9.
  76.     YEAR bestd5.
  77.     Month bestd5.
  78.     Week bestd5.
  79.     nat_orig $4.
  80.     Nationality_pers $4.
  81.     nat_pers_label $40.
  82.     Returning_country $4.
  83.     returning_country_label $40.
  84.     Ctry_return $10.
  85.     Failed_Asy $4.
  86.     Criminal_Sanction $4.
  87.     FacSus $4.
  88.     ProtReason $20.
  89.     Bus bestd5.
  90.     Van bestd5.
  91.     Car bestd5.
  92.     Airplane bestd5.
  93.     Other bestd5.
  94.     NA bestd5.
  95.     Region $40.
  96.     Total bestd14.
  97.     Stolen bestd14.
  98.     Lost bestd14.
  99.     PassengerType $10.
  100.     BorderSection $10.
  101.     'Entry/Exit'n $6.
  102.     Return_operation $16.
  103.     file $40.
  104. ;
  105. run;
  106. %mend init;
  107.  
  108. /*  Clear all the datasets in WORK  */
  109. proc datasets lib=work nolist nowarn kill memtype=(data view);
  110. run;
  111.  
  112. proc sql noprint;
  113.     drop table &tmplib..PVLMM_Data;
  114. quit;
  115.  
  116. %init(dset=&tmplib..PVLMM_Data);
  117.  
  118. /*  Insert basic information    */
  119. %macro basic_input(dset=);
  120.     proc sql noprint;
  121.         /*  Country ISOCode */
  122.         select country
  123.         into :ctry
  124.         from &tmplib..ctry;
  125.     quit;
  126.     /*  Insert data */
  127.     data &dset.;
  128.     set &dset.;
  129.         length country $4 file $40;
  130.         Reporting_country="&ctry";
  131.         file="&file";
  132.     run;
  133.  
  134. %mend basic_input;
  135. /*  Normalize nationalities */
  136. %macro norm_nat(in=);
  137.     data &in.(rename=(nat2=nat_orig));
  138.     set &in.;
  139.         nat2=strip(upcase(nat_orig));
  140.         drop nat_orig;
  141.     run;
  142. %mend norm_nat;
  143. /*  Macro for reading Excel tabs    */
  144. %macro Import_One(file=);
  145.     %put File for import: &file.;
  146.    
  147.     proc sql noprint;
  148.         drop table &tmplib..ctry;
  149.         drop table &tmplib..ASY1;
  150.         drop table &tmplib..RET1_1;
  151.         drop table &tmplib..RET1_2;
  152.         drop table &tmplib..IBC1AOUT;
  153.         drop table &tmplib..PASSPORT;
  154.         drop table &tmplib..PASSFLOW;
  155.  
  156.         drop table &tmplib..ASY2;
  157.         drop table &tmplib..RET2_1;
  158.         drop table &tmplib..RET2F;
  159.         drop table &tmplib..RET2V;
  160.         drop table &tmplib..RET2R;
  161.         drop table &tmplib..RET2;
  162.         drop table &tmplib..IBC1AOut2;
  163.         drop table &tmplib..Passport2;
  164.         drop table &tmplib..Passport3;
  165.         drop table &tmplib..PASSFLOW2;
  166.     quit;
  167.  
  168.     data &tmplib..ctry;
  169.         length country $4 file $40;
  170.         file="&file";
  171.         country=scan(file,1,"-");
  172.         /*
  173.         year=scan(file,3,"-")*1;
  174.         */
  175.         week_start=scan(file,4,"-")*1;
  176.         week_end=scan(scan(file,5,"-"),1,".")*1;
  177.     run;
  178.  
  179.     /*  Year    */
  180.     /*
  181.     proc import out=&tmplib..year
  182.             datafile="&root.\&file" replace
  183.             dbms=excelcs;
  184.         range="Instr & Def$C26:C26";
  185.         usedate=yes;
  186.         scantime=yes;
  187.     run;
  188.  
  189.     proc contents data=&tmplib..year out=&tmplib..year2(keep=name) noprint;
  190.     run;
  191.  
  192.     proc sql noprint;
  193.     select name
  194.     into :yrtmp
  195.     from &tmplib..year2;
  196.     quit;
  197.  
  198.     %global year;
  199.     %let year=&yrtmp;*/
  200.     /*  Asylum Inland   */
  201.     proc import out=&tmplib..ASY1
  202.             datafile="&root.\&file" replace
  203.             dbms=excelcs;
  204.         range="1 Asylum Inland$A8:K300";
  205.         usedate=yes;
  206.         scantime=yes;
  207.     run;
  208.  
  209.     /*  Return  */
  210.     proc import out=&tmplib..RET1_1
  211.             datafile="&root.\&file" replace
  212.             dbms=excelcs;
  213.         range="2 Return$A8:I300";
  214.         usedate=yes;
  215.         scantime=yes;
  216.     run;
  217.  
  218.     proc import out=&tmplib..RET1_2
  219.             datafile="&root.\&file" replace
  220.             dbms=excelcs;
  221.         range="1 Return$A8:I300";
  222.         usedate=yes;
  223.         scantime=yes;
  224.     run;
  225.  
  226.     /*  1A Out BCP  */
  227.     proc import out=&tmplib..IBC1AOUT
  228.             datafile="&root.\&file" replace
  229.             dbms=excelcs;
  230.         range="1A Out BCP$A8:F300";
  231.         usedate=yes;
  232.         scantime=yes;
  233.     run;
  234.  
  235.     /*  Passport    */
  236.     proc import out=&tmplib..PASSPORT
  237.             datafile="&root.\&file" replace
  238.             dbms=excelcs;
  239.         range="3 Passport$A8:F300";
  240.         usedate=yes;
  241.         scantime=yes;
  242.     run;
  243.  
  244.     /*  Passenger flow  */
  245.     proc import out=&tmplib..PASSFLOW
  246.             datafile="&root.\&file" replace
  247.             dbms=excelcs;
  248.         range="2 Passenger flow$A8:E300";
  249.         usedate=yes;
  250.         scantime=yes;
  251.     run;
  252.  
  253.     /*  Check if tables exist   */
  254.     proc sql noprint;
  255.         select memname
  256.         into :test1
  257.         from sashelp.vmember
  258.         where strip(upcase(memname))="ASY1";
  259.  
  260.         select memname
  261.         into :test2
  262.         from sashelp.vmember
  263.         where strip(upcase(memname))="RET1_1";
  264.  
  265.         select memname
  266.         into :test3
  267.         from sashelp.vmember
  268.         where strip(upcase(memname))="RET1_2";
  269.  
  270.         select memname
  271.         into :test4
  272.         from sashelp.vmember
  273.         where strip(upcase(memname))="IBC1AOUT";
  274.  
  275.         select memname
  276.         into :test5
  277.         from sashelp.vmember
  278.         where strip(upcase(memname))="PASSPORT";
  279.  
  280.         select memname
  281.         into :test6
  282.         from sashelp.vmember
  283.         where strip(upcase(memname))="PASSFLOW";
  284.     quit;
  285.     /*  If Asylum tab exists then proceed   */
  286.     %put &test1.;
  287.     %if %symexist(test1) %then %do;
  288.         data &tmplib..ASY2;
  289.         set &tmplib..ASY1;
  290.             where Totals*1 ne 0 and Totals*1 ne .;
  291.             rename Nationality=nat_orig
  292.                 'Suspected Facilitation'n=FacSus
  293.                 'Stated Reason for Protection'n=ProtReas;
  294.             Total=Totals*1;
  295.             drop Totals Bus Van Car Airplane Other 'N.A.'n;
  296.             length Indicator $20;
  297.             Indicator="Asylum Inland";
  298.             Bus1=Bus*1;
  299.             Van1=Van*1;
  300.             Car1=Car*1;
  301.             Airplane1=Airplane*1;
  302.             Other1=Other*1;
  303.             NA='N.A.'n*1;
  304.         run;
  305.  
  306.         data &tmplib..ASY2;
  307.         set &tmplib..ASY2;
  308.         rename Bus1=Bus Van1=Van Car1=Car Airplane1=Airplane Other1=Other;
  309.         run;
  310.  
  311.         %basic_input(dset=&tmplib..ASY2);
  312.         %norm_nat(in=&tmplib..ASY2);
  313.     %end;
  314.     /*  If Return tab exists then proceed   */
  315.     %put &test2.;
  316.     %if %symexist(test2) %then %do;
  317.         data &tmplib..RET2_1;
  318.         set &tmplib..RET1_1;
  319.             where 'Total Returns'n*1 ne 0 and 'Total Returns'n*1 ne .;
  320.             rename Nationality=nat_orig
  321.                 'Country of Return'n=Ctry_return
  322.                 'Returning Country'n=returning_country_label
  323.                 'Negative Asylum _Decision'n=Failed_Asy
  324.                 'Criminal Sanctions /_Extradition'n=Criminal_Sanction;
  325.             Total='Total Returns'n*1;
  326.             Forced='Total Forced'n*1;
  327.             Voluntary='Total Voluntary'n*1;
  328.             length Indicator $20 'Negative Asylum _Decision'n $4;
  329.             if upcase(strip(F9)) eq "REFUSAL" then Indicator="Refusal";
  330.             else Indicator="Return MS";
  331.             drop 'Total Returns'n 'Total Forced'n 'Total Voluntary'n F9;
  332.         run;
  333.  
  334.         %basic_input(dset=&tmplib..RET2_1);
  335.         %norm_nat(in=&tmplib..RET2_1);
  336.  
  337.         data &tmplib..RET2F(drop=Total Voluntary) &tmplib..RET2V(drop=Total Forced);
  338.         set &tmplib..RET2_1;
  339.             where Indicator ne "Refusal";
  340.         run;
  341.  
  342.         data &tmplib..RET2R(drop=Voluntary Forced);
  343.         set &tmplib..RET2_1;
  344.             where Indicator eq "Refusal" and Total ne 0;
  345.         run;
  346.  
  347.         data &tmplib..RET2F;
  348.         set &tmplib..RET2F;
  349.             Return_operation="Forced";
  350.             where Forced ne 0;
  351.             rename Forced=Total;
  352.         run;
  353.  
  354.         data &tmplib..RET2V;
  355.         set &tmplib..RET2V;
  356.             Return_operation="Voluntary";
  357.             where Voluntary ne 0;
  358.             rename Voluntary=Total;
  359.         run;
  360.        
  361.         %init(dset=&tmplib..RET2);
  362.  
  363.         data &tmplib..RET2;
  364.             if 0 then modify &tmplib..RET2;
  365.             set &tmplib..RET2F open=defer;
  366.             output;
  367.         run;
  368.  
  369.         data &tmplib..RET2;
  370.             if 0 then modify &tmplib..RET2;
  371.             set &tmplib..RET2V open=defer;
  372.             output;
  373.         run;
  374.  
  375.         data &tmplib..RET2;
  376.             if 0 then modify &tmplib..RET2;
  377.             set &tmplib..RET2R open=defer;
  378.             output;
  379.         run;
  380.  
  381.         data &tmplib..RET2;
  382.         set &tmplib..RET2;
  383.             where Total ne . and Total ne 0;
  384.         run;
  385.         /*
  386.         proc append base=&tmplib..RET2 data=&tmplib..RET2F;
  387.         run;
  388.  
  389.         proc append base=&tmplib..RET2 data=&tmplib..RET2V;
  390.         run;
  391.  
  392.         proc append base=&tmplib..RET2 data=&tmplib..RET2R;
  393.         run;
  394.         */
  395.     %end;
  396.  
  397.     %put &test3.;
  398.     %if %symexist(test3) %then %do;
  399.         data &tmplib..RET2;
  400.         set &tmplib..RET1_2;
  401.             where 'Total Returns'n*1 ne 0 and 'Total Returns'n*1 ne .;
  402.             rename Nationality=nat_orig
  403.                 'Country of Return'n=Ctry_return
  404.                 'Returning Country'n=returning_country_label
  405.                 'Negative Asylum _Decision'n=Failed_Asy
  406.                 'Criminal Sanctions /_Extradition'n=Criminal_Sanction;
  407.             Total='Total Returns'n*1;
  408.             Forced='Total Forced'n*1;
  409.             Voluntary='Total Voluntary'n*1;
  410.             length Indicator $20;
  411.             if F9="refusal" then Indicator="Refusal";
  412.             else Indicator="Return MS";
  413.             drop 'Total Returns'n 'Total Forced'n 'Total Voluntary'n F9;
  414.         run;
  415.  
  416.         %basic_input(dset=&tmplib..RET2);
  417.         %norm_nat(in=&tmplib..RET2);
  418.     %end;
  419.     /* If 1A Out BCP tab exists then proceed */
  420.     %put &test4.;
  421.     %if %symexist(test4) %then %do;
  422.         data &tmplib..IBC1AOut2;
  423.         set &tmplib..IBC1AOut;
  424.             where Totals*1 ne 0 and Totals*1 ne .;
  425.             rename Nationality=nat_orig;
  426.             Total=Totals*1;
  427.             length Indicator $20;
  428.             Indicator="ibc-1a";
  429.             keep Week_Starting Nationality nat_orig Total Indicator;
  430.         run;
  431.  
  432.         %basic_input(dset=&tmplib..IBC1AOut2);
  433.         %norm_nat(in=&tmplib..IBC1AOut2);  
  434.     %end;
  435.     /*  If Passport tab exists then proceed */
  436.     %put &test5.;
  437.     %if %symexist(test5) %then %do;
  438.         data &tmplib..Passport2;
  439.         set &tmplib..Passport;
  440.             length Indicator $20;
  441.             rename Nationality=nat_orig 'Administrative region'n=Region;
  442.             Total='Total new requests'n*1;
  443.             Lostn=lost*1;
  444.             Stolenn=stolen*1;
  445.             Indicator="Passport";
  446.             where Week_Starting ne .;
  447.             keep Week_Starting Nationality nat_orig Total Indicator 'Administrative region'n Region Lostn Stolenn;
  448.         run;
  449.  
  450.         data &tmplib..Passport3;
  451.         set &tmplib..Passport2;
  452.             where (Total ne 0
  453.             or Total ne .
  454.             or Lostn ne 0
  455.             or Lostn ne .
  456.             or Stolenn ne 0
  457.             or Stolenn ne .) and
  458.             Week_Starting ne .;
  459.             rename Lostn=Lost Stolenn=Stolen;
  460.         run;
  461.  
  462.         %basic_input(dset=&tmplib..Passport3);
  463.         %norm_nat(in=&tmplib..Passport3);
  464.     %end;
  465.     /*  If PassFlow tab exists then proceed */
  466.     %put &test6.;  
  467.     %if %symexist(test6) %then %do;
  468.         data &tmplib..PASSFLOW2;
  469.         set &tmplib..PASSFLOW;
  470.             length Indicator $20;
  471.             where 'Totals'n*1 ne 0 and 'Totals'n*1 ne .;
  472.             rename 'Type of passangers'n=PassengerType 'Border section'n=BorderSection;
  473.             Total=Totals*1;
  474.             Indicator="Passenger flow";
  475.             keep Indicator Week_Starting PassengerType Total BorderSection 'Entry/Exit'n;
  476.         run;
  477.  
  478.         %basic_input(dset=&tmplib..PassFlow2);
  479.     %end;
  480.     /*  Append tables   */
  481.     data &tmplib..PVLMM_Data;
  482.         if 0 then modify &tmplib..PVLMM_Data;
  483.         set &tmplib..ASY2 open=defer;
  484.         output;
  485.     run;
  486.  
  487.     data &tmplib..PVLMM_Data;
  488.         if 0 then modify &tmplib..PVLMM_Data;
  489.         set &tmplib..RET2 open=defer;
  490.         output;
  491.     run;
  492.  
  493.     data &tmplib..PVLMM_Data;
  494.         if 0 then modify &tmplib..PVLMM_Data;
  495.         set &tmplib..IBC1AOut2 open=defer;
  496.         output;
  497.     run;
  498.  
  499.     data &tmplib..PVLMM_Data;
  500.         if 0 then modify &tmplib..PVLMM_Data;
  501.         set &tmplib..Passport3 open=defer;
  502.         output;
  503.     run;
  504.  
  505.     data &tmplib..PVLMM_Data;
  506.         if 0 then modify &tmplib..PVLMM_Data;
  507.         set &tmplib..PassFlow2 open=defer;
  508.         output;
  509.     run;
  510. %mend Import_One;
  511.  
  512. proc sql;
  513.     drop table &tmplib..PVLMM_Data3;
  514.     drop table &tmplib..PVLMM_Data4;
  515.     drop table &tmplib..Base_countries;
  516.     drop table &tmplib..PVLMM_Data5;
  517.     drop table &tmplib..nat_dictionary;
  518.     drop table &tmplib..PVLMM_Data6;
  519.     drop table &tmplib..nat_labels;
  520.     drop table &tmplib..PVLMM_Data7;
  521.     drop table &tmplib..PVLMM_Data_Final;
  522.     drop table &tmplib..PVLMM_Data_Final2;
  523.     drop table &tmplib..PVLMM_Data_Final3;
  524. quit;
  525.  
  526. /********************************************/
  527. /*  Choose year !!!!!!!!!!!!!!!!!!!!!!!!!!  */
  528. /********************************************/
  529. %global year;
  530. %let year=2014;
  531. /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
  532. /*  Change the folder name here !!!!!!!!!   */
  533. /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
  534. %global path2;
  535. %let path2=14 May 2014;
  536. /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
  537. /*  Select file for update  */
  538. %global file_upd;
  539. %let file_upd=SVN-WBMM-2014-14-17-v1-1.xls;
  540. /********************************************/
  541. /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
  542. %global path1;
  543. %let path1 = \\aofrontex.local\frontex-shared\Restricted Area\Operations Division\RAU\RAU Work\FRAN\REPORTING\TOOLS\PVLMM\&year.;
  544. %global root;
  545. %let root=&path1.\&path2;
  546. %put Chosen path: &root.;
  547.  
  548. %Import_One(file=&file_upd);
  549.  
  550. /*  All post-import operations  */
  551.  
  552. proc sql;
  553.     create table &tmplib..PVLMM_Data3 as
  554.     select distinct Indicator,Reporting_country,reporting_country_label,'EU / WB'n,Week_Starting,YEAR,Month,Week,nat_orig,Nationality_pers,nat_pers_label,Returning_country,returning_country_label,Ctry_return,Failed_Asy,Criminal_Sanction,FacSus,ProtReason,sum(Bus) as Bus,sum (Van) as Van,sum(Car) as Car,sum(Airplane) as Airplane,sum(Other) as Other,sum(NA) as NA,Region,sum(Total) as Total,Stolen,Lost,PassengerType,BorderSection,'Entry/Exit'n,Return_operation,file
  555.     from &tmplib..PVLMM_Data
  556.     group by Indicator,Reporting_country,reporting_country_label,'EU / WB'n,Week_Starting,YEAR,Month,Week,nat_orig,Nationality_pers,nat_pers_label,Returning_country,returning_country_label,Ctry_return,Failed_Asy,Criminal_Sanction,FacSus,ProtReason,Region,Stolen,Lost,PassengerType,BorderSection,'Entry/Exit'n,Return_operation,file;
  557. quit;
  558.  
  559. data &tmplib..PVLMM_Data4;
  560. set &tmplib..PVLMM_Data3;
  561.     where Indicator ne "QQQQQQQQQQQQQQQQQQQ" and file="&file_upd";
  562.     if Reporting_country="GER" then Reporting_country="DEU";
  563.     if Reporting_country="GER" then Reporting_country_label="Germany";
  564.     if Reporting_country="DEU" then Reporting_country_label="Germany";
  565.     if Nationality_pers="" and Indicator ne "" then do;
  566.         Nationality_pers="UNK";
  567.         nat_pers_label="Unknown";
  568.     end;
  569. run;
  570.  
  571. /********************************************/
  572. /*  Import Isocode dictionary - BruteForce  */
  573. /********************************************/
  574.  
  575. %put ________Import Isocode dictionary________;
  576.  
  577. DATA &tmplib..Base_countries;
  578.     LENGTH
  579.         id                 8
  580.         name             $ 44
  581.         capname          $ 44
  582.         frename          $ 44
  583.         capfrename       $ 44
  584.         iso2code         $ 2
  585.         iso3code         $ 3
  586.         eu                 8
  587.         regionid           8
  588.         subregionid        8
  589.         visa               8
  590.         regionname       $ 10
  591.         subregionname    $ 25
  592.         schengen           8 ;
  593.     FORMAT
  594.         id               BEST12.
  595.         name             $CHAR44.
  596.         capname          $CHAR44.
  597.         frename          $CHAR44.
  598.         capfrename       $CHAR44.
  599.         iso2code         $CHAR2.
  600.         iso3code         $CHAR3.
  601.         eu               BEST12.
  602.         regionid         BEST12.
  603.         subregionid      BEST12.
  604.         visa             BEST12.
  605.         regionname       $CHAR10.
  606.         subregionname    $CHAR25.
  607.         schengen         BEST12. ;
  608.     INFORMAT
  609.         id               BEST12.
  610.         name             $CHAR44.
  611.         capname          $CHAR44.
  612.         frename          $CHAR44.
  613.         capfrename       $CHAR44.
  614.         iso2code         $CHAR2.
  615.         iso3code         $CHAR3.
  616.         eu               BEST12.
  617.         regionid         BEST12.
  618.         subregionid      BEST12.
  619.         visa             BEST12.
  620.         regionname       $CHAR10.
  621.         subregionname    $CHAR25.
  622.         schengen         BEST12. ;
  623.     INFILE DATALINES4
  624.         DLM='7F'x
  625.         MISSOVER
  626.         DSD ;
  627.     INPUT
  628.         id               : BEST32.
  629.         name             : $CHAR44.
  630.         capname          : $CHAR44.
  631.         frename          : $CHAR44.
  632.         capfrename       : $CHAR44.
  633.         iso2code         : $CHAR2.
  634.         iso3code         : $CHAR3.
  635.         eu               : BEST32.
  636.         regionid         : BEST32.
  637.         subregionid      : BEST32.
  638.         visa             : BEST32.
  639.         regionname       : $CHAR10.
  640.         subregionname    : $CHAR25.
  641.         schengen         : BEST32. ;
  642. DATALINES4;
  643. 101AfghanistanAFGHANISTANAfghanistanAFGHANISTANAFAFG05046191AsiaSouthern Asia0
  644. 102Aland IslandsÅLAND ISLANDSÅland, ÎlesÅLAND, ÎLESAXALA05056140EuropeNorthern Europe0
  645. 103AlbaniaALBANIAAlbanieALBANIEALALB05056201EuropeSouthern Europe0
  646. 104AlgeriaALGERIAAlgérieALGÉRIEDZDZA05016121AfricaNorthern Africa0
  647. 105American SamoaAMERICAN SAMOASamoa AméricainesSAMOA AMÉRICAINESASASM05066151OceaniaPolynesia0
  648. 106AndorraANDORRAAndorreANDORREADAND05056200EuropeSouthern Europe0
  649. 107AngolaANGOLAAngolaANGOLAAOAGO05016111AfricaMiddle Africa0
  650. 108AnguillaANGUILLAAnguillaANGUILLAAIAIA05026030AmericaCaribbean0
  651. 109AntarcticaANTARCTICAAntarctiqueANTARCTIQUEAQATA05036010AntarcticaAntarctica0
  652. 110Antigua and BarbudaANTIGUA AND BARBUDAAntigua-Et-BarbudaANTIGUA-ET-BARBUDAAGATG05026030AmericaCaribbean0
  653. 111ArgentinaARGENTINAArgentineARGENTINEARARG05026160AmericaSouth America0
  654. 112ArmeniaARMENIAArménieARMÉNIEAMARM05046221AsiaWestern Asia0
  655. 113ArubaARUBAArubaARUBAAWABW05026030AmericaCaribbean0
  656. 114AustraliaAUSTRALIAAustralieAUSTRALIEAUAUS05066020OceaniaAustralia and New Zealand0
  657. 115AustriaAUSTRIAAutricheAUTRICHEATAUT15056230EuropeWestern Europe1
  658. 116AzerbaijanAZERBAIJANAzerbaïdjanAZERBAÏDJANAZAZE05046221AsiaWestern Asia0
  659. 117BahamasBAHAMASBahamasBAHAMASBSBHS05026030AmericaCaribbean0
  660. 118BahrainBAHRAINBahreïnBAHREÏNBHBHR05046221AsiaWestern Asia0
  661. 119BangladeshBANGLADESHBangladeshBANGLADESHBDBGD05046191AsiaSouthern Asia0
  662. 120BarbadosBARBADOSBarbadeBARBADEBBBRB05026030AmericaCaribbean0
  663. 121BelarusBELARUSBélarusBÉLARUSBYBLR05056081EuropeEastern Europe0
  664. 122BelgiumBELGIUMBelgiqueBELGIQUEBEBEL15056230EuropeWestern Europe1
  665. 123BelizeBELIZEBelizeBELIZEBZBLZ05026041AmericaCentral America0
  666. 124BeninBENINBéninBÉNINBJBEN05016211AfricaWestern Africa0
  667. 125BermudaBERMUDABermudesBERMUDESBMBMU05026130AmericaNorth America0
  668. 126BhutanBHUTANBhoutanBHOUTANBTBTN05046191AsiaSouthern Asia0
  669. 127BoliviaBOLIVIA, PLURINATIONAL STATE OFBolivie, L'État Plurinational DeBOLIVIE, l'ÉTAT PLURINATIONAL DEBOBOL05026161AmericaSouth America0
  670. 128Bosnia and HerzegovinaBOSNIA AND HERZEGOVINABosnie-HerzégovineBOSNIE-HERZÉGOVINEBABIH05056201EuropeSouthern Europe0
  671. 129BotswanaBOTSWANABotswanaBOTSWANABWBWA05016181AfricaSouthern Africa0
  672. 130Bouvet IslandBOUVET ISLANDBouvet, ÎleBOUVET, ÎLEBVBVT05056140EuropeNorthern Europe0
  673. 131BrazilBRAZILBrésilBRÉSILBRBRA05026160AmericaSouth America0
  674. 132British Indian Ocean TerritoryBRITISH INDIAN OCEAN TERRITORYOcéan Indien, Territoire Britannique De L'OCÉAN INDIEN, TERRITOIRE BRITANNIQUE DE L'IOIOT05026030AmericaCaribbean0
  675. 133Brunei DarussalamBRUNEI DARUSSALAMBrunéi DarussalamBRUNÉI DARUSSALAMBNBRN05046170AsiaSouth-Eastern Asia0
  676. 134BulgariaBULGARIABulgarieBULGARIEBGBGR15056080EuropeEastern Europe0
  677. 135Burkina FasoBURKINA FASOBurkina FasoBURKINA FASOBFBFA05016211AfricaWestern Africa0
  678. 136BurundiBURUNDIBurundiBURUNDIBIBDI05016061AfricaEastern Africa0
  679. 137CambodiaCAMBODIACambodgeCAMBODGEKHKHM05046171AsiaSouth-Eastern Asia0
  680. 138CameroonCAMEROONCamerounCAMEROUNCMCMR05016111AfricaMiddle Africa0
  681. 139CanadaCANADACanadaCANADACACAN05026130AmericaNorth America0
  682. 140Cape VerdeCAPE VERDECap-VertCAP-VERTCVCPV05016211AfricaWestern Africa0
  683. 141Cayman IslandsCAYMAN ISLANDSCaïmanes, ÎlesCAÏMANES, ÎLESKYCYM05026031AmericaCaribbean0
  684. 142Central African RepublicCENTRAL AFRICAN REPUBLICCentrafricaine, RépubliqueCENTRAFRICAINE, RÉPUBLIQUECFCAF05016111AfricaMiddle Africa0
  685. 143ChadCHADTchadTCHADTDTCD05016111AfricaMiddle Africa0
  686. 144ChileCHILEChiliCHILICLCHL05026160AmericaSouth America0
  687. 145ChinaCHINAChineCHINECNCHN05046071AsiaEastern Asia0
  688. 146Christmas IslandCHRISTMAS ISLANDChristmas, ÎleCHRISTMAS, ÎLECXCXR05066020OceaniaAustralia and New Zealand0
  689. 147Cocos (Keeling) IslandsCOCOS (KEELING) ISLANDSCocos (Keeling), ÎlesCOCOS (KEELING), ÎLESCCCCK05066020OceaniaAustralia and New Zealand0
  690. 148ColombiaCOLOMBIAColombieCOLOMBIECOCOL05026161AmericaSouth America0
  691. 149ComorosCOMOROSComoresCOMORESKMCOM05016061AfricaEastern Africa0
  692. 150CongoCONGOCongoCONGOCGCOG05016111AfricaMiddle Africa0
  693. 151Congo, the Democratic Republic of theCONGO, THE DEMOCRATIC REPUBLIC OF THECongo, La République Démocratique DuCONGO, LA RÉPUBLIQUE DÉMOCRATIQUE DUCDCOD05016111AfricaMiddle Africa0
  694. 152Cook IslandsCOOK ISLANDSCook, ÎlesCOOK, ÎLESCKCOK05066150OceaniaPolynesia0
  695. 153Costa RicaCOSTA RICACosta RicaCOSTA RICACRCRI05026040AmericaCentral America0
  696. 154Côte d'IvoireCÔTE D'IVOIRECôte D'IvoireCÔTE D'IVOIRECICIV05016211AfricaWestern Africa0
  697. 155CroatiaCROATIACroatieCROATIEHRHRV05056200EuropeSouthern Europe0
  698. 156CubaCUBACubaCUBACUCUB05026031AmericaCaribbean0
  699. 157CyprusCYPRUSChypreCHYPRECYCYP15056200EuropeSouthern Europe0
  700. 158Czech RepublicCZECH REPUBLICTchèque, RépubliqueTCHÈQUE, RÉPUBLIQUECZCZE15056080EuropeEastern Europe1
  701. 159DenmarkDENMARKDanemarkDANEMARKDKDNK15056140EuropeNorthern Europe1
  702. 160DjiboutiDJIBOUTIDjiboutiDJIBOUTIDJDJI05016061AfricaEastern Africa0
  703. 161DominicaDOMINICADominiqueDOMINIQUEDMDMA05026031AmericaCaribbean0
  704. 162Dominican RepublicDOMINICAN REPUBLICDominicaine, RépubliqueDOMINICAINE, RÉPUBLIQUEDODOM05026031AmericaCaribbean0
  705. 163EcuadorECUADORÉquateurÉQUATEURECECU05026161AmericaSouth America0
  706. 164EgyptEGYPTÉgypteÉGYPTEEGEGY05016121AfricaNorthern Africa0
  707. 165El SalvadorEL SALVADOREl SalvadorEL SALVADORSVSLV05026040AmericaCentral America0
  708. 166Equatorial GuineaEQUATORIAL GUINEAGuinée ÉquatorialeGUINÉE ÉQUATORIALEGQGNQ05016111AfricaMiddle Africa0
  709. 167EritreaERITREAÉrythréeÉRYTHRÉEERERI05016061AfricaEastern Africa0
  710. 168EstoniaESTONIAEstonieESTONIEEEEST15056140EuropeNorthern Europe1
  711. 169EthiopiaETHIOPIAÉthiopieÉTHIOPIEETETH05016060AfricaEastern Africa0
  712. 170Falkland Islands (Malvinas)FALKLAND ISLANDS (MALVINAS)Falkland, Îles (Malvinas)FALKLAND, ÎLES (MALVINAS)FKFLK05026161AmericaSouth America0
  713. 171Faroe IslandsFAROE ISLANDSFéroé, ÎlesFÉROÉ, ÎLESFOFRO05056140EuropeNorthern Europe0
  714. 172FijiFIJIFidjiFIDJIFJFJI05066091OceaniaMelanesia0
  715. 173FinlandFINLANDFinlandeFINLANDEFIFIN15056140EuropeNorthern Europe1
  716. 174FranceFRANCEFranceFRANCEFRFRA15056230EuropeWestern Europe1
  717. 175French GuianaFRENCH GUIANAGuyane FrançaiseGUYANE FRANÇAISEGFGUF05026160AmericaSouth America0
  718. 176French PolynesiaFRENCH POLYNESIAPolynésie FrançaisePOLYNÉSIE FRANÇAISEPFPYF05066150OceaniaPolynesia0
  719. 177French Southern TerritoriesFRENCH SOUTHERN TERRITORIESTerres Australes FrançaisesTERRES AUSTRALES FRANÇAISESTFATF05056230EuropeWestern Europe0
  720. 178GabonGABONGabonGABONGAGAB05016111AfricaMiddle Africa0
  721. 179GambiaGAMBIAGambieGAMBIEGMGMB05016211AfricaWestern Africa0
  722. 180GeorgiaGEORGIAGéorgieGÉORGIEGEGEO05046221AsiaWestern Asia0
  723. 181GermanyGERMANYAllemagneALLEMAGNEDEDEU15056230EuropeWestern Europe1
  724. 182GhanaGHANAGhanaGHANAGHGHA05016211AfricaWestern Africa0
  725. 183GibraltarGIBRALTARGibraltarGIBRALTARGIGIB05056200EuropeSouthern Europe0
  726. 184GreeceGREECEGrèceGRÈCEGRGRC15056200EuropeSouthern Europe1
  727. 185GreenlandGREENLANDGroenlandGROENLANDGLGRL05026130AmericaNorth America0
  728. 186GrenadaGRENADAGrenadeGRENADEGDGRD05026031AmericaCaribbean0
  729. 187GuadeloupeGUADELOUPEGuadeloupeGUADELOUPEGPGLP05026030AmericaCaribbean0
  730. 188GuamGUAMGuamGUAMGUGUM05066100OceaniaMicronesia0
  731. 189GuatemalaGUATEMALAGuatemalaGUATEMALAGTGTM05026040AmericaCentral America0
  732. 190GuernseyGUERNSEYGuerneseyGUERNESEYGGGGY05056140EuropeNorthern Europe0
  733. 191GuineaGUINEAGuinéeGUINÉEGNGIN05016211AfricaWestern Africa0
  734. 192Guinea-BissauGUINEA-BISSAUGuinée-BissauGUINÉE-BISSAUGWGNB05016211AfricaWestern Africa0
  735. 193GuyanaGUYANAGuyanaGUYANAGYGUY05026161AmericaSouth America0
  736. 194HaitiHAITIHaïtiHAÏTIHTHTI05026031AmericaCaribbean0
  737. 195Heard Island and McDonald IslandsHEARD ISLAND AND MCDONALD ISLANDSHeard, Île Et Mcdonald, ÎlesHEARD, ÎLE ET MCDONALD, ÎLESHMHMD05066020OceaniaAustralia and New Zealand0
  738. 196Holy See (Vatican City State)HOLY SEE (VATICAN CITY STATE)Saint-Siège (État De La Cité Du Vatican)SAINT-SIÈGE (ÉTAT DE LA CITÉ DU VATICAN)VAVAT05056200EuropeSouthern Europe0
  739. 197HondurasHONDURASHondurasHONDURASHNHND05026040AmericaCentral America0
  740. 198Hong KongHONG KONGHong-KongHONG-KONGHKHKG05046070AsiaEastern Asia0
  741. 199HungaryHUNGARYHongrieHONGRIEHUHUN15056080EuropeEastern Europe1
  742. 200IcelandICELANDIslandeISLANDEISISL05056140EuropeNorthern Europe1
  743. 201IndiaINDIAIndeINDEININD05046191AsiaSouthern Asia0
  744. 202IndonesiaINDONESIAIndonésieINDONÉSIEIDIDN05046171AsiaSouth-Eastern Asia0
  745. 203Iran, Islamic Republic ofIRAN, ISLAMIC REPUBLIC OFIran, République Islamique D'IRAN, RÉPUBLIQUE ISLAMIQUE D'IRIRN05046191AsiaSouthern Asia0
  746. 204IraqIRAQIraqIRAQIQIRQ05046221AsiaWestern Asia0
  747. 205IrelandIRELANDIrlandeIRLANDEIEIRL15056140EuropeNorthern Europe0
  748. 206Isle of ManISLE OF MANÎle De ManÎLE DE MANIMIMN05056140EuropeNorthern Europe0
  749. 207IsraelISRAELIsraëlISRAËLILISR05046220AsiaWestern Asia0
  750. 208ItalyITALYItalieITALIEITITA15056200EuropeSouthern Europe1
  751. 209JamaicaJAMAICAJamaïqueJAMAÏQUEJMJAM05026031AmericaCaribbean0
  752. 210JapanJAPANJaponJAPONJPJPN05046070AsiaEastern Asia0
  753. 211JerseyJERSEYJerseyJERSEYJEJEY05056140EuropeNorthern Europe0
  754. 212JordanJORDANJordanieJORDANIEJOJOR05046221AsiaWestern Asia0
  755. 213KazakhstanKAZAKHSTANKazakhstanKAZAKHSTANKZKAZ05046051AsiaCentral Asia0
  756. 214KenyaKENYAKenyaKENYAKEKEN05016061AfricaEastern Africa0
  757. 215KiribatiKIRIBATIKiribatiKIRIBATIKIKIR05066101OceaniaMicronesia0
  758. 216Korea, Democratic People's Republic ofKOREA, DEMOCRATIC PEOPLE'S REPUBLIC OFCorée, République Populaire Démocratique DeCORÉE, RÉPUBLIQUE POPULAIRE DÉMOCRATIQUE DEKPPRK05046071AsiaEastern Asia0
  759. 217Korea, Republic ofKOREA, REPUBLIC OFCorée, République DeCORÉE, RÉPUBLIQUE DEKRKOR05046070AsiaEastern Asia0
  760. 218KuwaitKUWAITKoweïtKOWEÏTKWKWT05046221AsiaWestern Asia0
  761. 219KyrgyzstanKYRGYZSTANKirghizistanKIRGHIZISTANKGKGZ05046051AsiaCentral Asia0
  762. 220Lao People's Democratic RepublicLAO PEOPLE'S DEMOCRATIC REPUBLICLao, République Démocratique PopulaireLAO, RÉPUBLIQUE DÉMOCRATIQUE POPULAIRELALAO05046171AsiaSouth-Eastern Asia0
  763. 221LatviaLATVIALettonieLETTONIELVLVA15056140EuropeNorthern Europe1
  764. 222LebanonLEBANONLibanLIBANLBLBN05046221AsiaWestern Asia0
  765. 223LesothoLESOTHOLesothoLESOTHOLSLSO05016181AfricaSouthern Africa0
  766. 224LiberiaLIBERIALibériaLIBÉRIALRLBR05016211AfricaWestern Africa0
  767. 225Libyan Arab JamahiriyaLIBYAN ARAB JAMAHIRIYALibyenne, Jamahiriya ArabeLIBYENNE, JAMAHIRIYA ARABELYLBY05016121AfricaNorthern Africa0
  768. 226LiechtensteinLIECHTENSTEINLiechtensteinLIECHTENSTEINLILIE05056230EuropeWestern Europe0
  769. 227LithuaniaLITHUANIALituanieLITUANIELTLTU15056140EuropeNorthern Europe1
  770. 228LuxembourgLUXEMBOURGLuxembourgLUXEMBOURGLULUX15056230EuropeWestern Europe1
  771. 229MacaoMACAOMacaoMACAOMOMAC05046070AsiaEastern Asia0
  772. 230FYROMMACEDONIA, THE FORMER YUGOSLAV REPUBLIC OFMacédoine, L'Ex-République Yougoslave DeMACÉDOINE, L'EX-RÉPUBLIQUE YOUGOSLAVE DEMKMKD05056201EuropeSouthern Europe0
  773. 231MadagascarMADAGASCARMadagascarMADAGASCARMGMDG05016061AfricaEastern Africa0
  774. 232MalawiMALAWIMalawiMALAWIMWMWI05016061AfricaEastern Africa0
  775. 233MalaysiaMALAYSIAMalaisieMALAISIEMYMYS05046170AsiaSouth-Eastern Asia0
  776. 234MaldivesMALDIVESMaldivesMALDIVESMVMDV05046191AsiaSouthern Asia0
  777. 235MaliMALIMaliMALIMLMLI05016211AfricaWestern Africa0
  778. 236MaltaMALTAMalteMALTEMTMLT15056200EuropeSouthern Europe1
  779. 237Marshall IslandsMARSHALL ISLANDSMarshall, ÎlesMARSHALL, ÎLESMHMHL05066101OceaniaMicronesia0
  780. 238MartiniqueMARTINIQUEMartiniqueMARTINIQUEMQMTQ05026030AmericaCaribbean0
  781. 239MauritaniaMAURITANIAMauritanieMAURITANIEMRMRT05016211AfricaWestern Africa0
  782. 240MauritiusMAURITIUSMauriceMAURICEMUMUS05016060AfricaEastern Africa0
  783. 241MayotteMAYOTTEMayotteMAYOTTEYTMYT05016060AfricaEastern Africa0
  784. 242MexicoMEXICOMexiqueMEXIQUEMXMEX05026040AmericaCentral America0
  785. 243Micronesia, Federated States ofMICRONESIA, FEDERATED STATES OFMicronésie, États Fédérés DeMICRONÉSIE, ÉTATS FÉDÉRÉS DEFMFSM05066101OceaniaMicronesia0
  786. 244MoldovaMOLDOVA, REPUBLIC OFMoldova, République DeMOLDOVA, RÉPUBLIQUE DEMDMDA05056081EuropeEastern Europe0
  787. 245MonacoMONACOMonacoMONACOMCMCO05056230EuropeWestern Europe0
  788. 246MongoliaMONGOLIAMongolieMONGOLIEMNMNG05046071AsiaEastern Asia0
  789. 247MontenegroMONTENEGROMonténégroMONTÉNÉGROMEMNE05056201EuropeSouthern Europe0
  790. 248MontserratMONTSERRATMontserratMONTSERRATMSMSR05026031AmericaCaribbean0
  791. 249MoroccoMOROCCOMarocMAROCMAMAR05016121AfricaNorthern Africa0
  792. 250MozambiqueMOZAMBIQUEMozambiqueMOZAMBIQUEMZMOZ05016061AfricaEastern Africa0
  793. 251MyanmarMYANMARMyanmarMYANMARMMMMR05046171AsiaSouth-Eastern Asia0
  794. 252NamibiaNAMIBIANamibieNAMIBIENANAM05016181AfricaSouthern Africa0
  795. 253NauruNAURUNauruNAURUNRNRU05066101OceaniaMicronesia0
  796. 254NepalNEPALNépalNÉPALNPNPL05046191AsiaSouthern Asia0
  797. 255NetherlandsNETHERLANDSPays-BasPAYS-BASNLNLD15056230EuropeWestern Europe1
  798. 256Netherlands AntillesNETHERLANDS ANTILLESAntilles NéerlandaisesANTILLES NÉERLANDAISESANANT05026030AmericaCaribbean0
  799. 257New CaledoniaNEW CALEDONIANouvelle-CalédonieNOUVELLE-CALÉDONIENCNCL05066090OceaniaMelanesia0
  800. 258New ZealandNEW ZEALANDNouvelle-ZélandeNOUVELLE-ZÉLANDENZNZL05066020OceaniaAustralia and New Zealand0
  801. 259NicaraguaNICARAGUANicaraguaNICARAGUANINIC05026040AmericaCentral America0
  802. 260NigerNIGERNigerNIGERNENER05016211AfricaWestern Africa0
  803. 261NigeriaNIGERIANigériaNIGÉRIANGNGA05016211AfricaWestern Africa0
  804. 262NiueNIUENiuéNIUÉNUNIU05066150OceaniaPolynesia0
  805. 263Norfolk IslandNORFOLK ISLANDNorfolk, ÎleNORFOLK, ÎLENFNFK05066020OceaniaAustralia and New Zealand0
  806. 264Northern Mariana IslandsNORTHERN MARIANA ISLANDSMariannes Du Nord, ÎlesMARIANNES DU NORD, ÎLESMPMNP05066101OceaniaMicronesia0
  807. 265NorwayNORWAYNorvègeNORVÈGENONOR05056140EuropeNorthern Europe1
  808. 266OmanOMANOmanOMANOMOMN05046221AsiaWestern Asia0
  809. 267PakistanPAKISTANPakistanPAKISTANPKPAK05046191AsiaSouthern Asia0
  810. 268PalauPALAUPalaosPALAOSPWPLW05066100OceaniaMicronesia0
  811. 269PalestinePALESTINIAN TERRITORY, OCCUPIEDPalestinien Occupé, TerritoirePALESTINIEN OCCUPÉ, TERRITOIREPSPSE05046220AsiaWestern Asia0
  812. 270PanamaPANAMAPanamaPANAMAPAPAN05026040AmericaCentral America0
  813. 271Papua New GuineaPAPUA NEW GUINEAPapouasie-Nouvelle-GuinéePAPOUASIE-NOUVELLE-GUINÉEPGPNG05066091OceaniaMelanesia0
  814. 272ParaguayPARAGUAYParaguayPARAGUAYPYPRY05026160AmericaSouth America0
  815. 273PeruPERUPérouPÉROUPEPER05026161AmericaSouth America0
  816. 274PhilippinesPHILIPPINESPhilippinesPHILIPPINESPHPHL05046171AsiaSouth-Eastern Asia0
  817. 275PitcairnPITCAIRNPitcairnPITCAIRNPNPCN05066151OceaniaPolynesia0
  818. 276PolandPOLANDPolognePOLOGNEPLPOL15056080EuropeEastern Europe1
  819. 277PortugalPORTUGALPortugalPORTUGALPTPRT15056200EuropeSouthern Europe1
  820. 278Puerto RicoPUERTO RICOPorto RicoPORTO RICOPRPRI05026030AmericaCaribbean0
  821. 279QatarQATARQatarQATARQAQAT05046221AsiaWestern Asia0
  822. 280RéunionRÉUNIONRéunionRÉUNIONREREU05016060AfricaEastern Africa0
  823. 281RomaniaROMANIARoumanieROUMANIEROROU15056080EuropeEastern Europe0
  824. 282RussiaRUSSIAN FEDERATIONRussie, Fédération DeRUSSIE, FÉDÉRATION DERURUS05056081EuropeEastern Europe0
  825. 283RwandaRWANDARwandaRWANDARWRWA05016061AfricaEastern Africa0
  826. 284Saint BarthélemySAINT BARTHÉLEMYSaint-BarthélemySAINT-BARTHÉLEMYBLBLM05026030AmericaCaribbean0
  827. 285Saint HelenaSAINT HELENA, ASCENSION AND TRISTAN DA CUNHASainte-Hélène, Ascension Et Tristan Da CunhaSAINTE-HÉLÈNE, ASCENSION ET TRISTAN DA CUNHASHSHN05016211AfricaWestern Africa0
  828. 286Saint Kitts and NevisSAINT KITTS AND NEVISSaint-Kitts-Et-NevisSAINT-KITTS-ET-NEVISKNKNA05026030AmericaCaribbean0
  829. 287Saint LuciaSAINT LUCIASainte-LucieSAINTE-LUCIELCLCA05026031AmericaCaribbean0
  830. 288Saint MartinSAINT MARTINSaint-MartinSAINT-MARTINMFMAF05026030AmericaCaribbean0
  831. 289Saint Pierre and MiquelonSAINT PIERRE AND MIQUELONSaint-Pierre-Et-MiquelonSAINT-PIERRE-ET-MIQUELONPMSPM05026130AmericaNorth America0
  832. 290Saint Vincent and the GrenadinesSAINT VINCENT AND THE GRENADINESSaint-Vincent-Et-Les GrenadinesSAINT-VINCENT-ET-LES GRENADINESVCVCT05026031AmericaCaribbean0
  833. 291SamoaSAMOASamoaSAMOAWSWSM05066151OceaniaPolynesia0
  834. 292San MarinoSAN MARINOSaint-MarinSAINT-MARINSMSMR05056200EuropeSouthern Europe0
  835. 293Sao Tome and Principe[1]SAO TOME AND PRINCIPESao Tomé-Et-PrincipeSAO TOMÉ-ET-PRINCIPESTSTP05016111AfricaMiddle Africa0
  836. 294Saudi ArabiaSAUDI ARABIAArabie SaouditeARABIE SAOUDITESASAU05046221AsiaWestern Asia0
  837. 295SenegalSENEGALSénégalSÉNÉGALSNSEN05016211AfricaWestern Africa0
  838. 296SerbiaSERBIASerbieSERBIERSSRB05056201EuropeSouthern Europe0
  839. 297SeychellesSEYCHELLESSeychellesSEYCHELLESSCSYC05016060AfricaEastern Africa0
  840. 298Sierra LeoneSIERRA LEONESierra LeoneSIERRA LEONESLSLE05016211AfricaWestern Africa0
  841. 299SingaporeSINGAPORESingapourSINGAPOURSGSGP05046170AsiaSouth-Eastern Asia0
  842. 300SlovakiaSLOVAKIASlovaquieSLOVAQUIESKSVK15056080EuropeEastern Europe1
  843. 301SloveniaSLOVENIASlovénieSLOVÉNIESISVN15056200EuropeSouthern Europe1
  844. 302Solomon IslandsSOLOMON ISLANDSSalomon, ÎlesSALOMON, ÎLESSBSLB05066091OceaniaMelanesia0
  845. 303SomaliaSOMALIASomalieSOMALIESOSOM05016061AfricaEastern Africa0
  846. 304South AfricaSOUTH AFRICAAfrique Du SudAFRIQUE DU SUDZAZAF05016181AfricaSouthern Africa0
  847. 305South Georgia and the South Sandwich IslandsSOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDSGéorgie Du Sud Et Les Îles Sandwich Du SudGÉORGIE DU SUD ET LES ÎLES SANDWICH DU SUDGSSGS05056140EuropeNorthern Europe0
  848. 306SpainSPAINEspagneESPAGNEESESP15056200EuropeSouthern Europe1
  849. 307Sri LankaSRI LANKASri LankaSRI LANKALKLKA05046191AsiaSouthern Asia0
  850. 308SudanSUDANSoudanSOUDANSDSDN05016121AfricaNorthern Africa0
  851. 309SurinameSURINAMESurinameSURINAMESRSUR05026161AmericaSouth America0
  852. 310Svalbard and Jan MayenSVALBARD AND JAN MAYENSvalbard Et Île Jan MayenSVALBARD ET ÎLE JAN MAYENSJSJM05056140EuropeNorthern Europe0
  853. 311SwazilandSWAZILANDSwazilandSWAZILANDSZSWZ05016181AfricaSouthern Africa0
  854. 312SwedenSWEDENSuèdeSUÈDESESWE15056140EuropeNorthern Europe1
  855. 313SwitzerlandSWITZERLANDSuisseSUISSECHCHE05056230EuropeWestern Europe1
  856. 314SyriaSYRIAN ARAB REPUBLICSyrienne, République ArabeSYRIENNE, RÉPUBLIQUE ARABESYSYR05046221AsiaWestern Asia0
  857. 315Taiwan, Province of ChinaTAIWAN, PROVINCE OF CHINATaïwan, Province De ChineTAÏWAN, PROVINCE DE CHINETWTWN05046071AsiaEastern Asia0
  858. 316TajikistanTAJIKISTANTadjikistanTADJIKISTANTJTJK05046051AsiaCentral Asia0
  859. 317Tanzania, United Republic ofTANZANIA, UNITED REPUBLIC OFTanzanie, République-Unie DeTANZANIE, RÉPUBLIQUE-UNIE DETZTZA05016061AfricaEastern Africa0
  860. 318ThailandTHAILANDThaïlandeTHAÏLANDETHTHA05046171AsiaSouth-Eastern Asia0
  861. 319Timor-LesteTIMOR-LESTETimor-LesteTIMOR-LESTETLTLS05046171AsiaSouth-Eastern Asia0
  862. 320TogoTOGOTogoTOGOTGTGO05016211AfricaWestern Africa0
  863. 321TokelauTOKELAUTokelauTOKELAUTKTKL05066150OceaniaPolynesia0
  864. 322TongaTONGATongaTONGATOTON05066151OceaniaPolynesia0
  865. 323Trinidad and TobagoTRINIDAD AND TOBAGOTrinité-Et-TobagoTRINITÉ-ET-TOBAGOTTTTO05026031AmericaCaribbean0
  866. 324TunisiaTUNISIATunisieTUNISIETNTUN05016121AfricaNorthern Africa0
  867. 325TurkeyTURKEYTurquieTURQUIETRTUR05046221AsiaWestern Asia0
  868. 326TurkmenistanTURKMENISTANTurkménistanTURKMÉNISTANTMTKM05046051AsiaCentral Asia0
  869. 327Turks and Caicos IslandsTURKS AND CAICOS ISLANDSTurks Et Caïques, ÎlesTURKS ET CAÏQUES, ÎLESTCTCA05026031AmericaCaribbean0
  870. 328TuvaluTUVALUTuvaluTUVALUTVTUV05066151OceaniaPolynesia0
  871. 329UgandaUGANDAOugandaOUGANDAUGUGA05016061AfricaEastern Africa0
  872. 330UkraineUKRAINEUkraineUKRAINEUAUKR05056081EuropeEastern Europe0
  873. 331United Arab EmiratesUNITED ARAB EMIRATESÉmirats Arabes UnisÉMIRATS ARABES UNISAEARE05046221AsiaWestern Asia0
  874. 332United KingdomUNITED KINGDOMRoyaume-UniROYAUME-UNIGBGBR15056140EuropeNorthern Europe0
  875. 333United StatesUNITED STATESÉtats-UnisÉTATS-UNISUSUSA05026130AmericaNorth America0
  876. 334United States Minor Outlying IslandsUNITED STATES MINOR OUTLYING ISLANDSÎles Mineures Éloignées Des États-UnisÎLES MINEURES ÉLOIGNÉES DES ÉTATS-UNISUMUMI05026130AmericaNorth America0
  877. 335UruguayURUGUAYUruguayURUGUAYUYURY05026160AmericaSouth America0
  878. 336UzbekistanUZBEKISTANOuzbékistanOUZBÉKISTANUZUZB05046051AsiaCentral Asia0
  879. 337VanuatuVANUATUVanuatuVANUATUVUVUT05066091OceaniaMelanesia0
  880. 338VenezuelaVENEZUELA, BOLIVARIAN REPUBLIC OFVenezuela, République Bolivarienne DuVENEZUELA, RÉPUBLIQUE BOLIVARIENNE DUVEVEN05026160AmericaSouth America0
  881. 339Viet NamVIET NAMViet NamVIET NAMVNVNM05046171AsiaSouth-Eastern Asia0
  882. 340Virgin Islands, BritishVIRGIN ISLANDS, BRITISHÎles Vierges BritanniquesÎLES VIERGES BRITANNIQUESVGVGB05056140EuropeNorthern Europe0
  883. 341Virgin Islands, U.S.VIRGIN ISLANDS, U.S.Îles Vierges Des États-UnisÎLES VIERGES DES ÉTATS-UNISVIVIR05026031AmericaCaribbean0
  884. 342Wallis and FutunaWALLIS AND FUTUNAWallis Et FutunaWALLIS ET FUTUNAWFWLF05066150OceaniaPolynesia0
  885. 343Western SaharaWESTERN SAHARASahara OccidentalSAHARA OCCIDENTALEHESH05016120AfricaNorthern Africa0
  886. 344YemenYEMENYémenYÉMENYEYEM05046221AsiaWestern Asia0
  887. 345ZambiaZAMBIAZambieZAMBIEZMZMB05016061AfricaEastern Africa0
  888. 346ZimbabweZIMBABWEZimbabweZIMBABWEZWZWE05016061AfricaEastern Africa0
  889. 347Other and statelessOTHER AND STATELESSAutres et sans-etatsAUTRES ET SANS-ETATS XXX....  .
  890. 348UnknownUNKNOWNNon-etablieNON-ETABLIE UNK....  .
  891. ;;;;
  892.  
  893. %put ________Import Isocode dictionary Finished________;
  894.  
  895. proc sql;
  896. create table &tmplib..PVLMM_Data5 as
  897. select * from &tmplib..PVLMM_Data4
  898. left outer join base_countries
  899. on PVLMM_Data4.Reporting_country=base_countries.iso3code;
  900. quit;
  901.  
  902. /*  Create Nationality_pers based upon Nat_orig - check for errors  */
  903. /*  Path to Excel with list of corrected nationality iso codes  */
  904.  
  905. %global path;
  906. %let path=\\aofrontex.local\frontex-shared\Restricted Area\Operations Division\RAU\RAU Work\FRAN\REPORTING\TOOLS\PVLMM;
  907. %global in_file;
  908. %let in_file=RANCompileMacro_afterJuly2013.xlsx;
  909.  
  910. proc import out=&tmplib..nat_dictionary(rename=(Coor=nat_orig UNK=nat_dest)) replace
  911.             datafile="&path.\&in_file"
  912.             dbms=excelcs;
  913.         range="Corr_code$A2:B800";
  914.         usedate=yes;
  915.         scantime=yes;
  916. run;
  917.  
  918. libname shredstg '\\aofrontex.local\sas-shareddrive\SASData';
  919.  
  920. proc sql noprint;
  921.     create table &tmplib..PVLMM_Data6 as
  922.     select * from &tmplib..PVLMM_Data5 as t1
  923.     left outer join &tmplib..nat_dictionary as t2
  924.     on t1.nat_orig=t2.nat_orig;
  925.  
  926.     create table &tmplib..nat_labels as
  927.     select distinct nationality_pers, nat_pers_label as temp
  928.     from shredstg.fran_analysis;
  929. quit;
  930.  
  931. data &tmplib..PVLMM_Data7;
  932. set &tmplib..PVLMM_Data6;
  933.     reporting_country_label=name;
  934.     nationality_pers=nat_dest;
  935.     if eu=1 or schengen=1 then do;
  936.         'EU / WB'n='MS';
  937.     end;
  938.     else do;
  939.         'EU / WB'n='WB';
  940.         if Indicator='Return MS' then Indicator='Return WB';
  941.     end;
  942.     drop id name capname frename capfrename iso2code iso3code eu regionid subregionid visa regionname subregionname schengen nat_dest;
  943. run;
  944.  
  945. proc sql noprint;
  946.     create table &tmplib..PVLMM_Data_Final as
  947.     select * from &tmplib..PVLMM_Data7 as t1
  948.     left outer join &tmplib..nat_labels as t2
  949.     on t1.nationality_pers=t2.nationality_pers;
  950.  
  951.     create table &tmplib..PVLMM_Data_Final2 as
  952.     select * from &tmplib..PVLMM_Data_Final
  953.     left outer join base_countries
  954.     on PVLMM_Data_Final.returning_country_label=base_countries.name;
  955. quit;
  956.  
  957. data &tmplib..PVLMM_Data_Final3;
  958. set &tmplib..PVLMM_Data_Final2;
  959.     format Week_Starting date9.;
  960.     returning_country=iso3code;
  961.     nat_pers_label=temp;
  962.    
  963.     drop temp drop id name capname frename capfrename iso2code iso3code eu regionid subregionid visa regionname subregionname schengen;
  964.     Week=week(Week_Starting,'v');
  965.     if week(Week_Starting,'v')<10 then do;
  966.         YYYYWK=strip(strip(year(Week_Starting))||'Wk '||strip(week(Week_Starting,'v')));
  967.     end;
  968.     else do;
  969.         YYYYWK=strip(strip(year(Week_Starting))||'Wk'||strip(week(Week_Starting,'v')));
  970.     end;
  971.     if month(Week_Starting)<10 then do;
  972.         YYYYMM=strip(strip(year(Week_Starting))||'M '||strip(month(Week_Starting)));
  973.     end;
  974.     else do;
  975.         YYYYMM=strip(strip(year(Week_Starting))||'M'||strip(month(Week_Starting)));
  976.     end;
  977.     Month=month(Week_Starting);
  978.     Year=year(Week_Starting);
  979.  
  980.     if month(Week_Starting)<4 then YYYYQ=cats(Year,'Q1');
  981.     if month(Week_Starting)>=4 and Month<7 then YYYYQ=cats(Year,'Q2');
  982.     if month(Week_Starting)>=7 and Month<10 then YYYYQ=cats(Year,'Q3');
  983.     if month(Week_Starting)>=10 then YYYYQ=cats(Year,'Q4');
  984.  
  985.     where Total ne 0 and Total ne . or Lost>0 or Stolen>0;
  986.  
  987.     if month=12 and week=1 then YYYYWK=strip(strip(year(Week_Starting)+1)||'Wk'||strip(week(Week_Starting,'v')));
  988.  
  989.     /*Adjusting weeks for 2010*/
  990.     if datepart(Week_Starting)="01jan2010"d then YYYYWK="2009Wk53";
  991.     if datepart(Week_Starting)="02jan2010"d then YYYYWK="2009Wk53";
  992.     if datepart(Week_Starting)="03jan2010"d then YYYYWK="2009Wk53";
  993.  
  994.     /*Adjusting weeks for 2011*/
  995.     if datepart(Week_Starting)="01jan2011"d then YYYYWK="2010Wk52";
  996.  
  997.     /*Adjusting weeks for 2012*/
  998.     if datepart(Week_Starting)="31dec2012"d then YYYYWK="2013Wk 1";
  999.     if datepart(Week_Starting)="01jan2012"d then YYYYWK="2011Wk52";
  1000.  
  1001.     /*Adjusting weeks for 2013*/
  1002.     if datepart(Week_Starting)="30dec2013"d then YYYYWK="2014Wk 1";
  1003.     if datepart(Week_Starting)="31dec2013"d then YYYYWK="2014Wk 1";
  1004.  
  1005.     if Failed_Asy="Y" then Failed_Asy="Yes";
  1006.     if Failed_Asy="N" then Failed_Asy="No";
  1007. run;
  1008.  
  1009. /*  Update whole dataset    */
  1010.  
  1011. data shredstg.PVLMM;
  1012. set shredstg.PVLMM;
  1013. where file ne "&file_upd";
  1014. *drop Forced Voluntary;
  1015. run;
  1016.  
  1017. data shredstg.PVLMM;
  1018.     if 0 then modify shredstg.PVLMM;
  1019.     set &tmplib..PVLMM_Data_Final3 open=defer;
  1020.     output;
  1021. run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement