gnucash maint: Multiple changes pushed

Geert Janssens gjanssens at code.gnucash.org
Sat Jan 31 01:50:02 EST 2015


Updated	 via  https://github.com/Gnucash/gnucash/commit/48b30271 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/87520cdd (commit)
	from  https://github.com/Gnucash/gnucash/commit/7581436e (commit)



commit 48b30271e0427dde058a475849869454fcf4e851
Author: Geert Janssens <janssens-geert at telenet.be>
Date:   Fri Jan 30 11:49:41 2015 +0100

    Rewrite gnc-test-env in perl
    
    This eliminates another guile dependency in the build chain
    
    Conflicts:
    	src/backend/dbi/test/Makefile.am

diff --git a/configure.ac b/configure.ac
index 444d7fa..015fc89 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1575,7 +1575,6 @@ AC_CONFIG_FILES(
   dnl # init-commands go here
 )
 # A few files need extra actions at creation time
-AC_CONFIG_FILES([src/gnc-test-env], [chmod u+x src/gnc-test-env])
 AC_CONFIG_FILES([src/bin/overrides/gnucash-make-guids], [chmod u+x src/bin/overrides/gnucash-make-guids])
 LDFLAGS="${LDFLAGS} ${NOUNDEF}"
 AC_OUTPUT
diff --git a/src/Makefile.am b/src/Makefile.am
index acc4ac5..ab000a3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -51,8 +51,6 @@ endif
 noinst_HEADERS = \
   swig-runtime.h
 
-noinst_DATA = gnc-test-env
-
 if BUILDING_FROM_SCM
 swig-runtime.h:
 	$(SWIG) -guile -external-runtime $@
@@ -62,6 +60,6 @@ MAINTAINERCLEANFILES = swig-runtime.h
 EXTRA_DIST = \
   base-typemaps.i \
   README.modules \
-  gnc-test-env \
+  gnc-test-env.pl \
   guile-mappings.h \
   platform.h
diff --git a/src/app-utils/Makefile.am b/src/app-utils/Makefile.am
index a899cec..026a6e1 100644
--- a/src/app-utils/Makefile.am
+++ b/src/app-utils/Makefile.am
@@ -219,7 +219,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/app-utils/test/Makefile.am b/src/app-utils/test/Makefile.am
index 8510dff..9304048 100644
--- a/src/app-utils/test/Makefile.am
+++ b/src/app-utils/test/Makefile.am
@@ -32,7 +32,7 @@ TESTS_ENVIRONMENT = \
   GUILE="${GUILE}" \
   SRCDIR=${srcdir} \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 LDADD = \
    ${top_builddir}/src/libqof/qof/libgnc-qof.la \
diff --git a/src/backend/dbi/test/Makefile.am b/src/backend/dbi/test/Makefile.am
index b10fa9f..8c5332c 100644
--- a/src/backend/dbi/test/Makefile.am
+++ b/src/backend/dbi/test/Makefile.am
@@ -41,7 +41,7 @@ TESTS_ENVIRONMENT = \
   GNC_ACCOUNT_PATH=${top_srcdir}/accounts/C \
   SRCDIR=${srcdir} \
   ${gnc_dbd_dir_override} \
-  $(shell ${top_builddir}/src/gnc-test-env ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 EXTRA_DIST += \
     test-dbi-stuff.h \
diff --git a/src/backend/sql/test/Makefile.am b/src/backend/sql/test/Makefile.am
index 4424649..c914a41 100644
--- a/src/backend/sql/test/Makefile.am
+++ b/src/backend/sql/test/Makefile.am
@@ -21,7 +21,7 @@ GNC_TEST_DEPS = \
 TESTS_ENVIRONMENT = \
   GNC_ACCOUNT_PATH=${top_srcdir}/accounts/C \
   SRCDIR=${srcdir} \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = $(TESTS)
 
diff --git a/src/backend/xml/test/Makefile.am b/src/backend/xml/test/Makefile.am
index 0575f90..d399353 100644
--- a/src/backend/xml/test/Makefile.am
+++ b/src/backend/xml/test/Makefile.am
@@ -217,7 +217,7 @@ TESTS_ENVIRONMENT = \
   GNC_TEST_FILES=test-files/xml2 \
   SRCDIR=${srcdir} \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_LTLIBRARIES = libgnc-test-file-stuff.la
 
diff --git a/src/bin/overrides/gnucash-build-env.in b/src/bin/overrides/gnucash-build-env.in
index cb8e769..99fdb7a 100644
--- a/src/bin/overrides/gnucash-build-env.in
+++ b/src/bin/overrides/gnucash-build-env.in
@@ -30,7 +30,7 @@ then
 fi
 
 set +x
-eval `${top_builddir}/src/gnc-test-env \
+eval `${top_srcdir}/src/gnc-test-env.pl \
   --gnc-module-dir ${top_builddir}/src/engine \
   --gnc-module-dir ${top_builddir}/src/backend/xml \
   --gnc-module-dir ${top_builddir}/src/network-utils \
diff --git a/src/business/business-gnome/Makefile.am b/src/business/business-gnome/Makefile.am
index 4eeb61a..13dabac 100644
--- a/src/business/business-gnome/Makefile.am
+++ b/src/business/business-gnome/Makefile.am
@@ -141,7 +141,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/core-utils/Makefile.am b/src/core-utils/Makefile.am
index 144b8b9..4b7ce86 100644
--- a/src/core-utils/Makefile.am
+++ b/src/core-utils/Makefile.am
@@ -121,7 +121,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(lib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV})  \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV})  \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/core-utils/test/Makefile.am b/src/core-utils/test/Makefile.am
index e104597..f1f6d1b 100644
--- a/src/core-utils/test/Makefile.am
+++ b/src/core-utils/test/Makefile.am
@@ -27,7 +27,7 @@ GNC_TEST_DEPS = \
 
 TESTS_ENVIRONMENT = \
   SRCDIR=${srcdir} \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-gnc-uri-utils \
diff --git a/src/engine/Makefile.am b/src/engine/Makefile.am
index edccd18..fc6e819 100644
--- a/src/engine/Makefile.am
+++ b/src/engine/Makefile.am
@@ -198,7 +198,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/engine/test/Makefile.am b/src/engine/test/Makefile.am
index 2a1ce64..98d7d24 100644
--- a/src/engine/test/Makefile.am
+++ b/src/engine/test/Makefile.am
@@ -68,7 +68,7 @@ TESTS_ENVIRONMENT = \
   GUILE="${GUILE}" \
   SRCDIR=${srcdir} \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-link \
diff --git a/src/gnc-module/Makefile.am b/src/gnc-module/Makefile.am
index 71f0048..def4016 100644
--- a/src/gnc-module/Makefile.am
+++ b/src/gnc-module/Makefile.am
@@ -74,7 +74,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(lib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/gnc-module/test/Makefile.am b/src/gnc-module/test/Makefile.am
index e4f2c8b..843a5d8 100644
--- a/src/gnc-module/test/Makefile.am
+++ b/src/gnc-module/test/Makefile.am
@@ -49,7 +49,7 @@ GNC_TEST_DEPS = \
 TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-load-c \
diff --git a/src/gnc-test-env.in b/src/gnc-test-env.in
deleted file mode 100755
index 596dd3a..0000000
--- a/src/gnc-test-env.in
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/bin/sh
-exec @GUILE@ -s $0 "$@"
-!#
-
-;; Spit out the environment variable settings needed based on
-;; arguments listing gnc-module-dirs, guile-load-dirs, and
-;; library-dirs
-
-(use-modules (srfi srfi-13) (srfi srfi-14)) ;; for string-tokenize
-;; 'debug is deprecated and unused since guile 2
-(cond-expand
-  (guile-2 )
-  (else
-    (debug-enable 'debug)))
-(debug-enable 'backtrace)
-(read-enable 'positions)
-
-;; Are we on MS Windows here? If yes, make this a #t.
-;; (utsname:sysname (uname)) wasn't available in my guile-1.6.7 on
-;; mingw, so I don't know an automated way to do this so far.
-(define is-windows?
-  (let ((ostype (getenv "OSTYPE")))
-    (and ostype
-         (string=? ostype "msys"))))
-
-(define args (cdr (command-line)))
-(define display-exports? #t)
-
-(define gnc-module-dirs '())
-(define guile-load-dirs '())
-(define library-dirs '())
-
-(define (usage-death)
-  (display "Usage: gnc-test-env [ --no-exports ]\n")
-  (display "                    [ (--gnc-module-dir dir | \n")
-  (display "                       --guile-load-dir dir | \n")
-  (display "                       --library-dir dir) ... ]\n")
-  (exit 1))
-
-(define (process-args! args)
-  (let loop ((rest args))
-    (cond
-     ((null? rest) #t)
-     ((string=? "--gnc-module-dir" (car rest))
-      (set! gnc-module-dirs (cons (cadr rest) gnc-module-dirs))
-      (loop (cddr rest)))
-     ((string=? "--guile-load-dir" (car rest))
-      (set! guile-load-dirs (cons (cadr rest) guile-load-dirs))
-      (loop (cddr rest)))
-     ((string=? "--library-dir" (car rest))
-      (set! library-dirs (cons (cadr rest) library-dirs))
-      (loop (cddr rest)))
-     (else (usage-death))))
-  (set! gnc-module-dirs (reverse gnc-module-dirs))
-  (set! guile-load-dirs (reverse guile-load-dirs)))
-
-;; The character set of everything except a directory separator as
-;; necessary for string-tokenize below
-(define char-set-path
-  (char-set-adjoin
-   (char-set-delete char-set:graphic #\/)
-   #\ ))
-
-;; The directory separator string.
-(define dir-separator-string
-  (if is-windows?
-      "\\\\" ;; Needs to be quoted twice because of additional shell quoting
-      "/"))
-
-;; The path separator string; only needed for GUILE_LOAD_PATH
-(define path-sep-str
-  (if is-windows?
-      ";"
-      ":"))
-
-;; Adapt the directory separator character in the given PATH and
-;; return the result.
-(define (adapt-dirsep path)
-  (string-join
-   (string-tokenize path char-set-path)
-   dir-separator-string))
-
-(if (and (not (null? args))
-         (string=? "--no-exports" (car args)))
-    (begin
-      (set! display-exports? #f)
-      (set! args (cdr args))))
-
-(if (null? args) (exit 0))
-
-(process-args! args)
-
-(define (get-dir-adder env-name dir-list item-suffix separator)
-  (string-append env-name "=\""
-                 (apply string-append
-                        (map
-                         (lambda (dir)
-                           (string-append dir item-suffix separator))
-                         dir-list))
-                 "${" env-name "}\" "))
-
-(display
- (adapt-dirsep
-  (get-dir-adder "GNC_MODULE_PATH" gnc-module-dirs "/.libs" path-sep-str)))
-
-(display
- (adapt-dirsep
-  (get-dir-adder "GUILE_LOAD_PATH" guile-load-dirs "" path-sep-str)))
-
-(display
- (adapt-dirsep
-  (get-dir-adder "GUILE_LOAD_COMPILED_PATH" guile-load-dirs "" path-sep-str)))
-
-(display
- (adapt-dirsep
-  (get-dir-adder "LD_LIBRARY_PATH" library-dirs "/.libs" path-sep-str)))
-
-(display
- (adapt-dirsep
-  (get-dir-adder "DYLD_LIBRARY_PATH" library-dirs "/.libs" path-sep-str)))
-
-(if is-windows?
-    (display
-     (get-dir-adder "PATH" library-dirs "/.libs" ":")))
-
-(if display-exports?
-    (begin
-      (display "; ")
-      (display " export GNC_MODULE_PATH;")
-      (display " export GUILE_LOAD_PATH;")
-      (display " export GUILE_LOAD_COMPILED_PATH;")
-      (display " export LD_LIBRARY_PATH;")
-      (display " export DYLD_LIBRARY_PATH;")
-      (if is-windows?
-          (display " export PATH;"))))
-
-;; Local Variables:
-;; mode: scheme
-;; End:
diff --git a/src/gnc-test-env.pl b/src/gnc-test-env.pl
new file mode 100755
index 0000000..1440831
--- /dev/null
+++ b/src/gnc-test-env.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+
+# Spit out the environment variable settings needed based on
+# arguments listing @gnc_module_dirs, @guile_load_dirs, and
+# @library_dirs
+use Getopt::Long;
+
+my $define_exports=1;
+my @gnc_module_dirs=();
+my @guile_load_dirs=();
+my @library_dirs=();
+GetOptions ("exports!"       => \$define_exports,  # flag
+            "gnc-module-dir=s" => \@gnc_module_dirs, # arry of strings
+            "guile-load-dir=s" => \@guile_load_dirs, # arry of strings
+            "library-dir=s"    => \@library_dirs,    # arry of strings
+            "verbose" => \$verbose) # flag
+or die(
+"Usage: gnc-test-env.pl [ --exports | --noexports ]\n" .
+"                       [ (--gnc-module-dir dir | --guile-load-dir dir | --library-dir dir) ... ]\n");
+
+if ( $^O =~ /MSWin32/ ) {
+    $path_separator=";";
+} else {
+    $path_separator=":";
+}
+
+sub print_env_var {
+    ($env_name, $dir_suffix, $separator, @dir_list) = @_;
+    return if not @dir_list;
+    my @suffixed_dir_list = map {
+        my $dir = $_ . $dir_suffix;
+        if ( $^O =~ /MSWin32/ ) {
+           $dir =~ s!/!\\\\!g; } # Backslashes need to be escaped for the environment
+        $dir;
+    } @dir_list;
+    print $env_name . '="' .
+          join($separator, @suffixed_dir_list) .
+          $separator . '${' . $env_name . '}" ';
+}
+
+print_env_var "GNC_MODULE_PATH", "/.libs", $path_separator, @gnc_module_dirs;
+print_env_var "GUILE_LOAD_PATH", "", $path_separator, @guile_load_dirs;
+print_env_var "GUILE_LOAD_COMPILED_PATH", "", $path_separator, @guile_load_dirs;
+print_env_var "LD_LIBRARY_PATH", "/.libs", $path_separator, @library_dirs;
+print_env_var "DYLD_LIBRARY_PATH", "/.libs", $path_separator, @library_dirs;
+
+if ( $^O =~ /MSWin32/ ) {
+    print_env_var "PATH", "/.libs", ":", @library_dirs;
+}
+
+if ($define_exports) {
+    print ";\n";
+    print "export GNC_MODULE_PATH;\n" if @gnc_module_dirs;
+    print "export GUILE_LOAD_PATH;\n" if @guile_load_dirs;
+    print "export GUILE_LOAD_COMPILED_PATH;\n" if @guile_load_dirs;
+    print "export LD_LIBRARY_PATH;\n" if @library_dirs;
+    print "export DYLD_LIBRARY_PATH;\n" if @library_dirs;
+    if ( $^O =~ /MSWin32/ ) {
+        print "export PATH;\n" if @library_dirs;
+    }
+}
\ No newline at end of file
diff --git a/src/gnome-utils/Makefile.am b/src/gnome-utils/Makefile.am
index b46ed7a..b0e873f 100644
--- a/src/gnome-utils/Makefile.am
+++ b/src/gnome-utils/Makefile.am
@@ -290,7 +290,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/gnome-utils/test/Makefile.am b/src/gnome-utils/test/Makefile.am
index d3383c7..02ea939 100644
--- a/src/gnome-utils/test/Makefile.am
+++ b/src/gnome-utils/test/Makefile.am
@@ -32,7 +32,7 @@ TESTS_ENVIRONMENT = \
   GUILE="${GUILE}" \
   SRCDIR=${srcdir} \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-link-module test-gnc-recurrence
diff --git a/src/import-export/qif-imp/Makefile.am b/src/import-export/qif-imp/Makefile.am
index 2ea474b..242d5f4 100644
--- a/src/import-export/qif-imp/Makefile.am
+++ b/src/import-export/qif-imp/Makefile.am
@@ -125,7 +125,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/import-export
diff --git a/src/import-export/qif/test/Makefile.am b/src/import-export/qif/test/Makefile.am
index bd5e7c0..13bdda2 100644
--- a/src/import-export/qif/test/Makefile.am
+++ b/src/import-export/qif/test/Makefile.am
@@ -41,7 +41,7 @@ GNC_TEST_DEPS = --gnc-module-dir ${top_builddir}/src/core-utils \
 
 TESTS_ENVIRONMENT = \
   GNC_TEST_FILES=${srcdir}/test-files \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-link \
diff --git a/src/import-export/test/Makefile.am b/src/import-export/test/Makefile.am
index 5363e8a..420b66b 100644
--- a/src/import-export/test/Makefile.am
+++ b/src/import-export/test/Makefile.am
@@ -48,7 +48,7 @@ GNC_TEST_DEPS = --gnc-module-dir ${top_builddir}/src/engine \
 TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-link \
diff --git a/src/optional/python-bindings/tests/Makefile.am b/src/optional/python-bindings/tests/Makefile.am
index d828941..13a23f4 100644
--- a/src/optional/python-bindings/tests/Makefile.am
+++ b/src/optional/python-bindings/tests/Makefile.am
@@ -23,7 +23,7 @@ TESTS_ENVIRONMENT = \
   PYTHONPATH=$$PYTHONPATH:$(top_builddir)/src/test-core/ \
   PYTHONPATH=$$PYTHONPATH:$(top_srcdir)/src/test-core/ \
   PYTHONPATH=$$PYTHONPATH:$(top_builddir)/src/test-core/.libs \
-  $(shell $(top_builddir)/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
   
 ## We borrow guile's convention and use @-...-@ as the substitution
 ## brackets below, instead of the usual @... at .  This prevents autoconf
diff --git a/src/register/register-core/test/Makefile.am b/src/register/register-core/test/Makefile.am
index f7e6ecf..fe485bc 100644
--- a/src/register/register-core/test/Makefile.am
+++ b/src/register/register-core/test/Makefile.am
@@ -6,7 +6,7 @@ TESTS =  \
 #
 
 #TESTS_ENVIRONMENT := \
-#  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+#  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-link-module
diff --git a/src/register/register-gnome/test/Makefile.am b/src/register/register-gnome/test/Makefile.am
index 12d4b1b..b21e628 100644
--- a/src/register/register-gnome/test/Makefile.am
+++ b/src/register/register-gnome/test/Makefile.am
@@ -6,7 +6,7 @@ TESTS =  \
 #
 
 #TESTS_ENVIRONMENT := \
-#  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+#  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = \
   test-link-module
diff --git a/src/report/business-reports/Makefile.am b/src/report/business-reports/Makefile.am
index 8ea9dfe..225f9e5 100644
--- a/src/report/business-reports/Makefile.am
+++ b/src/report/business-reports/Makefile.am
@@ -74,7 +74,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/locale-specific/us/Makefile.am b/src/report/locale-specific/us/Makefile.am
index fe0e87f..187e3e5 100644
--- a/src/report/locale-specific/us/Makefile.am
+++ b/src/report/locale-specific/us/Makefile.am
@@ -81,7 +81,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/locale-specific/us/test/Makefile.am b/src/report/locale-specific/us/test/Makefile.am
index fd998db..712490e 100644
--- a/src/report/locale-specific/us/test/Makefile.am
+++ b/src/report/locale-specific/us/test/Makefile.am
@@ -16,7 +16,7 @@ GNC_TEST_DEPS = --gnc-module-dir ${top_builddir}/src/engine \
 TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS = test-link-module
 
diff --git a/src/report/report-gnome/Makefile.am b/src/report/report-gnome/Makefile.am
index 0e7a566..8a8e33c 100644
--- a/src/report/report-gnome/Makefile.am
+++ b/src/report/report-gnome/Makefile.am
@@ -129,7 +129,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/report-gnome/test/Makefile.am b/src/report/report-gnome/test/Makefile.am
index d713f76..5c03452 100644
--- a/src/report/report-gnome/test/Makefile.am
+++ b/src/report/report-gnome/test/Makefile.am
@@ -55,7 +55,7 @@ TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 
 check_PROGRAMS = test-link-module
diff --git a/src/report/report-system/Makefile.am b/src/report/report-system/Makefile.am
index d1539f8..c464ee0 100644
--- a/src/report/report-system/Makefile.am
+++ b/src/report/report-system/Makefile.am
@@ -134,7 +134,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/report-system/test/Makefile.am b/src/report/report-system/test/Makefile.am
index 1df692f..a01900e 100644
--- a/src/report/report-system/test/Makefile.am
+++ b/src/report/report-system/test/Makefile.am
@@ -59,7 +59,7 @@ TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 
 check_PROGRAMS = test-link-module
diff --git a/src/report/standard-reports/Makefile.am b/src/report/standard-reports/Makefile.am
index a39c2e7..917d401 100644
--- a/src/report/standard-reports/Makefile.am
+++ b/src/report/standard-reports/Makefile.am
@@ -102,7 +102,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/standard-reports/test/Makefile.am b/src/report/standard-reports/test/Makefile.am
index c0bbe49..6f89e4d 100644
--- a/src/report/standard-reports/test/Makefile.am
+++ b/src/report/standard-reports/test/Makefile.am
@@ -50,7 +50,7 @@ TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 
 SCM_TEST_HELPERS = \
diff --git a/src/report/stylesheets/Makefile.am b/src/report/stylesheets/Makefile.am
index c0fcf76..9ea4300 100644
--- a/src/report/stylesheets/Makefile.am
+++ b/src/report/stylesheets/Makefile.am
@@ -89,7 +89,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/stylesheets/test/Makefile.am b/src/report/stylesheets/test/Makefile.am
index 092b7be..3211592 100644
--- a/src/report/stylesheets/test/Makefile.am
+++ b/src/report/stylesheets/test/Makefile.am
@@ -34,6 +34,6 @@ TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 EXTRA_DIST = test-load-module
diff --git a/src/report/utility-reports/Makefile.am b/src/report/utility-reports/Makefile.am
index 6204ea4..15edc5d 100644
--- a/src/report/utility-reports/Makefile.am
+++ b/src/report/utility-reports/Makefile.am
@@ -74,7 +74,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report
diff --git a/src/report/utility-reports/test/Makefile.am b/src/report/utility-reports/test/Makefile.am
index e4bfad4..ec5e232 100644
--- a/src/report/utility-reports/test/Makefile.am
+++ b/src/report/utility-reports/test/Makefile.am
@@ -30,6 +30,6 @@ TESTS_ENVIRONMENT = \
   GUILE_WARN_DEPRECATED=no \
   GUILE="${GUILE}" \
   GNC_BUILDDIR="${abs_top_builddir}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 EXTRA_DIST = test-load-module
diff --git a/src/scm/Makefile.am b/src/scm/Makefile.am
index ea07c85..e45fd59 100644
--- a/src/scm/Makefile.am
+++ b/src/scm/Makefile.am
@@ -52,7 +52,7 @@ GUILE_COMPILE_ENV = \
 
 
 %.go : %.scm .scm-links
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash
diff --git a/src/tax/us/Makefile.am b/src/tax/us/Makefile.am
index 66451d5..1d1a02d 100644
--- a/src/tax/us/Makefile.am
+++ b/src/tax/us/Makefile.am
@@ -61,7 +61,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/tax
diff --git a/src/tax/us/test/Makefile.am b/src/tax/us/test/Makefile.am
index 7330674..bab6a0e 100644
--- a/src/tax/us/test/Makefile.am
+++ b/src/tax/us/test/Makefile.am
@@ -10,7 +10,7 @@ GNC_TEST_DEPS = \
 
 TESTS_ENVIRONMENT = \
   GUILE="${GUILE}" \
-  $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
+  $(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GNC_TEST_DEPS})
 
 check_PROGRAMS=test-link-module
 test_link_module_SOURCES=test-link-module.c
diff --git a/src/test-core/Makefile.am b/src/test-core/Makefile.am
index cfa7f6d..0bc589a 100644
--- a/src/test-core/Makefile.am
+++ b/src/test-core/Makefile.am
@@ -106,7 +106,7 @@ GUILE_COMPILE_ENV = \
 %.go : %.scm .scm-links $(noinst_LTLIBRARIES)
 	GNC_UNINSTALLED=yes \
 	GNC_BUILDDIR=${top_builddir} \
-	$(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \
+	$(shell ${abs_top_srcdir}/src/gnc-test-env.pl --noexports ${GUILE_COMPILE_ENV}) \
 	$(GUILD) compile -o $@ $<
 
 gncscmmodcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash

commit 87520cdde4bd85731a8f82393be90b316ffefa05
Author: Geert Janssens <janssens-geert at telenet.be>
Date:   Thu Jan 29 21:07:07 2015 +0100

    Switch from guile to xml to manage our iso-currencies source file

diff --git a/configure.ac b/configure.ac
index 073e8ae..444d7fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1550,7 +1550,6 @@ AC_CONFIG_FILES(
   dnl # non-makefiles
   src/bin/gnucash.rc
   src/app-utils/migratable-prefs.xml
-  src/engine/iso-currencies-to-c
   src/gnome/gnucash.desktop.in
   dnl # GSettings schema files
   src/business/business-gnome/gschemas/org.gnucash.dialogs.business.gschema.xml.in
diff --git a/src/engine/Makefile.am b/src/engine/Makefile.am
index 150e09a..edccd18 100644
--- a/src/engine/Makefile.am
+++ b/src/engine/Makefile.am
@@ -128,8 +128,6 @@ noinst_HEADERS = \
   gnc-pricedb-p.h \
   policy-p.h
 
-noinst_SCRIPTS = iso-currencies-to-c
-
 libgncmod_engine_la_LDFLAGS = -avoid-version
 if CLANG
 libgncmod_engine_la_CFLAGS = -Wno-invalid-source-encoding
@@ -158,8 +156,8 @@ EXTRA_DIST = \
   README.query-api \
   design.txt \
   extensions.txt \
-  iso-4217-currencies.scm \
-  iso-currencies-to-c \
+  iso-4217-currencies.xml \
+  iso-currencies-to-c.xsl \
   kvp_doc.txt \
   SX-book-p.h \
   engine.i \
@@ -168,10 +166,8 @@ EXTRA_DIST = \
   ${gncscm_DATA}
 
 if GNUCASH_SEPARATE_BUILDDIR
-#For compiling
-SCM_FILE_LINKS = iso-4217-currencies.scm
 #For executing test cases
-SCM_FILE_LINKS += \
+SCM_FILE_LINKS = \
   ${gncscmmod_DATA} \
   ${gncscm_DATA}
 endif
@@ -237,9 +233,9 @@ endif
 endif
 endif
 
-iso-4217-currencies.c: iso-4217-currencies.scm iso-currencies-to-c
-	-chmod u+x ./iso-currencies-to-c
-	./iso-currencies-to-c "${srcdir}"
+
+iso-4217-currencies.c: iso-4217-currencies.xml iso-currencies-to-c.xsl
+	$(XSLTPROC) -o $@ $(srcdir)/iso-currencies-to-c.xsl $<
 
 BUILT_SOURCES = iso-4217-currencies.c
 
diff --git a/src/engine/iso-4217-currencies.scm b/src/engine/iso-4217-currencies.scm
deleted file mode 100644
index 616a9e0..0000000
--- a/src/engine/iso-4217-currencies.scm
+++ /dev/null
@@ -1,253 +0,0 @@
-;; currency descriptions for ISO4217 currencies.
-;;
-;; This file is not currently used at runtime.  It's used to generate
-;; the contents of iso-4217-currencies.c.
-;;
-;; You can find Currency Information from the following sites:
-;;   http://www.evertype.com/standards/iso4217/iso4217-en.html
-;;   http://www.xe.com/iso4217.htm
-;;   http://www.thefinancials.com/vortex/CurrencyFormats.html
-;; But currently used was
-;;   http://en.wikipedia.org/wiki/ISO4217 and relatives and the official at
-;;   http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/currency_codes/currency_codes_list-1.htm
-;;
-;; Learned from some bugs (543061, 564450), please keep in mind:
-;; If there are no coins for subunits, subunits might still be in use on the paper
-;;
-;; Format:
-;; (fullname, unitname*, partname*, namespace, mnemonic, exchange-code, parts-per-unit*, smallest-fraction, local-symbol)
-;; planed extensions: replace-date, by-ISO, frozen-rate [x old : 1 new]
-;;
-;; where * means currently unused;
-;; fullname should be the same as in /usr/share/xml/iso-codes/iso_4217.xml from package iso-codes
-;; exchange-code is stored in ISIN/CUSIP;
-;; see iso-currencies-to-c for details and recent changes.
-;; Sort order by ISO codes for simpler maintainance
-;;
-( "Andorran Franc" "franc" "centime" "ISO4217" "ADF" "950" 100 100 "â‚£" ) ;; 2002-01-01 "FRF" 1  ;; = 1/1 French Franc replaced by EUR
-( "Andorran Peseta" "peseta" "centimo"  "ISO4217" "ADP" "724" 100 100 "₧" ) ;; 2002-01-01 "ESP" 1 ;; = 1/1 Spanish Peseta replaced by EUR
-( "UAE Dirham" "dirham" "fil" "ISO4217" "AED" "784" 100 100 "Dhs" ) ;; There is also an arabic symbol for "Dhs"
-( "Afghani" "afghani" "pul" "ISO4217" "AFA" "004" 100 100 "" ) ;; through 2003-01-02 "AFN" 1000
-( "Afghani" "afghani" "pul" "ISO4217" "AFN" "971" 1 1 "" )
-( "Lek" "lek" "qindarka" "ISO4217" "ALL" "008" 100 100 "" )
-( "Armenian Dram" "dram" "Luma" "ISO4217" "AMD" "051" 100 100 "Õ¤Ö€." )
-( "Netherlands Antillian Guilder" "guilder" "cent" "ISO4217" "ANG" "532" 100 100 "NAÆ’" ) ;; through 2010-10 ???
-( "Kwanza" "kwanza" "cêntimos" "ISO4217" "AOA" "973" 100 100 "Kz" )
-( "Angola New Kwanza" "new kwanza" "lwei" "ISO4217" "AON" "024" 100 100 "" ) ;; 1995-07-01 "AOR" 1000
-( "Angola Kwanza Reajustado" "reajustado kwanza" "centimos" "ISO4217" "AOR" "982" 100 100 "" ) ;; 2000-02-01 "AOA" 1000000
-( "Argentine Austral" "austral" "centavo" "ISO4217" "ARA" "XXX" 100 100 "" ) ;; 1992-01-01 "ARS" 10000
-( "Argentine Peso" "peso" "centavo"  "ISO4217" "ARS" "032" 100 100 "" )
-( "Austrian Schilling" "shilling" "groschen"  "ISO4217" "ATS" "040" 100 100 "öS" ) ;; 2002-01-01 "EUR" 13.7603
-( "Australian Dollar" "dollar" "cent" "ISO4217" "AUD" "036" 100 100 "$" )
-( "Aruban Guilder" "florin" "cent" "ISO4217" "AWG" "533" 100 100 "Afl." ) ;; ""
-( "Azerbaijanian Manat" "manat" "qəpik" "ISO4217" "AZM" "031" 100 100 "" ) ;; 2006-01-01 "AZN" 5000
-( "Azerbaijanian Manat" "manat" "qəpik" "ISO4217" "AZN" "944" 100 100 "m" ) ;; "m" should be  a 90° rotated € sign, but currently not encoded in Unicode
-( "Bosnia and Herzegovina Dinar" "B.H. dinar" "para" "ISO4217" "BAD" "070" 100 100 "" ) ;; 1998-06-22 "BAM" 100 ;; there was a revaluation 1994-08: 10000:1
-( "Convertible Marks" "B.H. mark" "fening" "ISO4217" "BAM" "977" 100 100 "KM" )
-( "Barbados Dollar" "dollar" "cent"  "ISO4217" "BBD" "052" 100 100 "Bds$" )
-( "Taka" "taka" "paisa"  "ISO4217" "BDT" "050" 100 100 "৳" )
-( "Belgian Franc" "franc" "centime" "ISO4217" "BEF" "056" 100 100 "fr." ) ;; 2002-01-01 "EUR" 40.3399
-( "Bulgarian Lev A/99" "lev" "stotinki" "ISO4217" "BGL" "100" 100 100 "" ) ;; 1999-07-05 "BGN" 1000
-( "Bulgarian Lev" "lev" "stotinki" "ISO4217" "BGN" "975" 100 100 "лв" ) ;; scheduled replacement: 2012-01-01 "EUR" 1.95583 (=DEM)
-( "Bahraini Dinar" "dinar" "fil"  "ISO4217" "BHD" "048" 1000 1000 "BD" ) ;; ar:.د.ب
-( "Burundi Franc" "franc" "centime" "ISO4217" "BIF" "108" 100 100 "FBu" )
-( "Bermudian Dollar" "dollar" "cent" "ISO4217" "BMD" "060" 100 100 "BD$" )
-( "Brunei Dollar" "dollar" "sen" "ISO4217" "BND" "096" 100 100 "B$" )
-( "Boliviano" "boliviano"  "centavo" "ISO4217" "BOB" "068" 100 100 "Bs." )
-( "Mvdol" "mvdol"  "centavo" "ISO4217" "BOV" "984" 100 100 "" ) ;; Mantenimiento de Valor respecto al Dólar
-( "Brazilian Cruzeiro" "cruzeiro" "centavo" "ISO4217" "BRE" "076" 100 100 "" ) ;; 1993-08-01 "BRR" 1000
-( "Brazilian Real" "real" "centavo"  "ISO4217" "BRL" "986" 100 100 "R$" )
-( "Brazilian Cruzeiro Real" "cruzeiro" "centavo" "ISO4217" "BRR" "987" 100 100 "" ) ;; 1994-07-01 "BRL" 2750
-( "Bahamian Dollar" "dollar" "cent"  "ISO4217" "BSD" "044" 100 100 "B$" )
-( "Ngultrum" "ngultrum" "chetrum" "ISO4217" "BTN" "064" 100 100 "Nu." )
-( "Pula" "pula" "thebe" "ISO4217" "BWP" "072" 100 100 "P" )
-( "Belarussian Rouble" "ruble" "kapeyka" "ISO4217" "BYB" "" 100 1 "" ) ;; 2000-01-01 "BYR" 1000
-( "Belarussian Ruble" "ruble" "ruble" "ISO4217" "BYR" "974" 1 100 "Br" )
-( "Belize Dollar" "dollar" "cent" "ISO4217" "BZD" "084" 100 100 "BZ$" )
-( "Canadian Dollar" "dollar" "cent" "ISO4217" "CAD" "124" 100 100 "C$" )
-( "Franc Congolais" "franc" "centime" "ISO4217" "CDF" "976" 100 100 "FC" )
-( "WIR Euro" "euro" "cent" "ISO4217" "CHE" "974" 100 100 "" ) ;; complementary currency by WIR Wirtschaftsring-Genossenschaft
-( "Swiss Franc" "franc" "centime" "ISO4217" "CHF" "756" 100 100 "SFr." )
-( "WIR Franc" "franc" "centime" "ISO4217" "CHW" "948" 100 100 "" ) ;; complementary currency by WIR Wirtschaftsring-Genossenschaft
-( "Unidades de fomento" "UF" "" "ISO4217" "CLF" "990" 10000 10000 "" ) ;; international secured loans; decimals not defined but required for conversion as of 2011-03-18 1 CLF = 21,560.19 CLP
-( "Chilean Peso" "peso" "centavo" "ISO4217" "CLP" "152" 100 1 "$" ) ;; "$" should have 2 strokes
-( "Yuan Renminbi" "renminbi" "fen" "ISO4217" "CNY" "156" 100 100 "å…ƒ" )
-( "Colombian Peso" "peso" "centavo" "ISO4217" "COP" "170" 100 100 "$" )
-( "Unidad de Valor Real" "UVR" "???" "ISO4217" "COU" "970" 100 100 "" ) ;;
-( "Costa Rican Colon" "colon" "centimo" "ISO4217" "CRC" "188" 100 100 "â‚¡" )
-( "Cuban Peso" "peso" "centavo" "ISO4217" "CUP" "192" 100 100 "$MN" )
-( "Cuban Convertible Peso" "peso" "centavo" "ISO4217" "CUC" "931" 100 100 "CUC$" )
-( "Cape Verde Escudo" "escudo" "centavo" "ISO4217" "CVE" "132" 100 100 "Esc" )
-( "Cyprus Pound" "pound" "pence"  "ISO4217" "CYP" "196" 100 100 "£" ) ;; 2008-01-01 "EUR" 0.585274
-( "Czech Koruna" "koruna" "haleru" "ISO4217" "CZK" "203" 100 100  "Kč" )
-( "Deutsche Mark" "deutschemark" "pfennig" "ISO4217" "DEM" "280" 100 100 "DM" ) ;; 2002-01-01 "EUR" 1.95583
-( "Djibouti Franc" "franc" "centime" "ISO4217" "DJF" "262" 100 1 "Fdj" )
-( "Danish Krone" "krone" "øre" "ISO4217" "DKK" "208" 100 100 "kr" )
-( "Dominican Peso" "peso" "centavo"  "ISO4217" "DOP" "214" 100 100 "RD$" )
-( "Algerian Dinar" "dinar" "santeem"  "ISO4217" "DZD" "012" 100 100 "DA" ) ;; ar.: 	دج
-( "Ecuador Sucre" "sucre" "centavo" "ISO4217" "ECS" "218" 100 100 "S/." ) ;; 2000-09-15 "USD" 25000
-( "Kroon" "kroon" "sent" "ISO4217" "EEK" "233" 100 100 "kr" ) ;; 2011-01-01 "EUR" 15.6466
-( "Egyptian Pound" "pound" "qirsh"  "ISO4217" "EGP" "818" 100 100 "£E" ) ;; ar.:ج.م maleem=0.001 £E for accounting?
-( "Nakfa" "nakfa" "cent" "ISO4217" "ERN" "232" 100 100 "Nfa" )
-( "Spanish Peseta" "peseta" "centimo"  "ISO4217" "ESP" "724" 100 100 "₧" ) ;; 2002-01-01 "EUR" 166.386
-( "Ethiopian Birr" "birr" "santim" "ISO4217" "ETB" "230" 100 100 "Br" )
-( "Euro" "euro" "euro-cent" "ISO4217" "EUR" "978" 100 100 "€" )
-( "Finnish Markka" "markka" "penni"  "ISO4217" "FIM" "246" 100 100 "mk" ) ;; 2002-01-01 "EUR" 5.94573
-( "Fiji Dollar" "dollar" "cent" "ISO4217" "FJD" "242" 100 100 "FJ$" )
-( "Falkland Islands Pound" "pound" "pence" "ISO4217" "FKP" "238" 100 100 "FK£" )
-( "French Franc" "franc" "centime" "ISO4217" "FRF" "250" 100 100 "â‚£" ) ;; 2002-01-01 "EUR" 6.55957
-( "Pound Sterling" "pound" "pence" "ISO4217" "GBP" "826" 100 100 "£" )
-( "Lari" "lari" "tetri" "ISO4217" "GEL" "981" 100 100 "" )
-( "Cedi" "cedi" "pesewa" "ISO4217" "GHC" "288" 100 100 "" ) ;; 2007-07-01 "GHS" 10000
-( "Ghana Cedi" "cedi" "pesewa" "ISO4217" "GHS" "936" 100 100 "GH₵" )
-( "Gibraltar Pound" "pound" "pence"  "ISO4217" "GIP" "292" 100 100 "£" )
-( "Dalasi" "dalasi" "butut" "ISO4217" "GMD" "270" 100 100 "D" )
-( "Guinea Franc" "franc" "centime" "ISO4217" "GNF" "324" 100 100 "FG" )
-( "Greek Drachma" "drachma" "lepta" "ISO4217" "GRD" "200" 100 100 "Δρ." ) ;; 2002-01-01 "EUR" 340.750
-( "Quetzal" "quetzal" "centavo" "ISO4217" "GTQ" "320" 100 100 "Q" )
-( "Guinea-Bissau Peso" "peso" "centavo" "ISO4217" "GWP" "624" 100 100"" ) ;; 1997-01-01 "XOF" 65
-( "Guyana Dollar" "dollar" "cent" "ISO4217" "GYD" "328" 100 100 "G$" )
-( "Hong Kong Dollar" "dollar" "cent"  "ISO4217" "HKD" "344" 100 100 "HK$" )
-( "Lempira" "lempira" "centavo"  "ISO4217" "HNL" "340" 100 100 "L" )
-( "Croatian Kuna" "kuna" "lipa" "ISO4217" "HRK" "191" 100 100 "kn" )
-( "Gourde" "gourde" "centime"  "ISO4217" "HTG" "332" 100 100 "G" )
-( "Forint" "forint" "fillér" "ISO4217" "HUF" "348" 1 100 "Ft" )
-( "Rupiah" "rupiah" "sen" "ISO4217" "IDR" "360" 1 100 "Rp" )
-( "Irish Pound" "punt" "pingin" "ISO4217" "IEP" "372" 100 100 "£" ) ;; 2002-01-01 "EUR" 0.787564
-( "New Israeli Sheqel" "new shekel" "agora"  "ISO4217" "ILS" "376" 100 100 "₪" )
-( "Indian Rupee" "rupee" "paisa" "ISO4217" "INR" "356" 100 100 "₹" )
-( "Iraqi Dinar" "dinar" "fil"  "ISO4217" "IQD" "368" 1000 1000 "ع.د" )
-( "Iranian Rial" "rial" "dinar" "ISO4217" "IRR" "364" 1 1 "﷼﷼" )
-( "Iceland Krona" "krona" "aur" "ISO4217" "ISK" "352" 1 100 "kr" )
-( "Italian Lira" "lira" "lira" "ISO4217" "ITL" "380" 1 1 "₤" ) ;; 2002-01-01 "EUR" 1936.27
-( "Jamaican Dollar" "dollar" "cent" "ISO4217" "JMD" "388" 100 100 "J$" )
-( "Jordanian Dinar" "dinar" "fil"  "ISO4217" "JOD" "400" 1000 1000 "JD" )
-( "Yen" "yen" "sen"  "ISO4217" "JPY" "392" 100 1 "Â¥" )
-( "Kenyan Shilling" "shilling" "cent" "ISO4217" "KES" "404" 100 100 "Ksh" )
-( "Som" "som" "tyiyn" "ISO4217" "KGS" "417" 100 100 "" )
-( "Riel" "riel" "sen" "ISO4217" "KHR" "116" 100 100 "" )
-( "Comoro Franc" "franc" "centime" "ISO4217" "KMF" "174" 100 1  "FC" )
-( "North Korean Won" "won" "chon" "ISO4217" "KPW" "408" 100 100 "â‚©" )
-( "Won" "won" "chon"  "ISO4217" "KRW" "410" 1 100 "â‚©" )
-( "Kuwaiti Dinar" "dinar" "fils"  "ISO4217" "KWD" "414" 1000 1000 "د.ك" )
-( "Cayman Islands Dollar" "dollar" "cent"  "ISO4217" "KYD" "136" 100 100 "CI$" )
-( "Tenge" "tenge" "tiyn" "ISO4217" "KZT" "398" 100 100 "₸" )
-( "Kip" "kip" "att" "ISO4217" "LAK" "418" 100 100 "â‚­" )
-( "Lebanese Pound" "pound" "piastre"  "ISO4217" "LBP" "422" 100 100 "Ù„.Ù„" )
-( "Sri Lanka Rupee" "rupee" "cent"  "ISO4217" "LKR" "144" 100 100 "₨" )
-( "Liberian Dollar" "dollar" "cent" "ISO4217" "LRD" "430" 100 100 "L$" )
-( "Loti" "loti" "sente" "ISO4217" "LSL" "426" 100 100 "M" )
-( "Lithuanian Litas" "litas" "centas" "ISO4217" "LTL" "440" 100 100 "Lt" )
-( "Luxembourg Franc" "frang" "centime" "ISO4217" "LUF" "442" 100 100  "Flux" ) ;; 2002-01-01 "EUR" 40.3399
-( "Latvian Lats" "lats" "santīms" "ISO4217" "LVL" "428" 100 100 "Ls" ) ;; Valid from 2. may 2009. till 31. december 2013, now "EUR" 0.702804
-( "Libyan Dinar" "dinar" "dirham" "ISO4217" "LYD" "434" 1000 1000 "ل.د" )
-( "Moroccan Dirham" "dirham" "centime"  "ISO4217" "MAD" "504" 100 100 "د.م" )
-( "Moldovan Leu" "leu" "ban" "ISO4217" "MDL" "498" 100 100 "" )
-( "Malagasy Ariary" "ariary" "iraimbilanja" "ISO4217" "MGA" "969" 5 5 "" )
-( "Malagasy Franc" "franc" "centime" "ISO4217" "MGF" "450" 500 500 "" ) ;; 2003-07-31 "MGA" 5
-( "Denar" "denar" "deni" "ISO4217" "MKD" "807" 100 100 "ден" )
-( "Mali Franc" "franc" "centime" "ISO4217" "MLF" "466" 100 100 "" ) ;; 1984-07-01 "XOF" 2
-( "Kyat" "kyat" "pya" "ISO4217" "MMK" "104" 100 100 "K" )
-( "Tugrik" "tugrik" "mongo" "ISO4217" "MNT" "496" 100 100 "â‚®" )
-( "Pataca" "pataca" "avo"  "ISO4217" "MOP" "446" 100 100 "MOP$" )
-( "Ouguiya" "ouguiya" "khoum"  "ISO4217" "MRO" "478" 5 5 "UM" )
-( "Maltese Lira" "lira" "cent"  "ISO4217" "MTL" "470" 100 100 "Lm" ) ;; 2008-01-01 "EUR" 0.4293
-( "Mauritius Rupee" "rupee" "cent"  "ISO4217" "MUR" "480" 100 100 "R" )
-( "Rufiyaa" "rufiyaa" "laari" "ISO4217" "MVR" "462" 100 100 ".Þƒ" )
-( "Kwacha" "kwacha" "tambala"  "ISO4217" "MWK" "454" 100 100 "MK" )
-( "Mexican Peso" "peso" "centavo" "ISO4217" "MXN" "484" 100 100 "Mex$" ) ;;since Jan 1993 (1000 MXP = 1 MXN)
-( "Mexican Unidad de Inversion (UDI)" "UDI" "centavo" "ISO4217" "MXV" "979" 100 100 "" ) ;;fund index based; used for credits, not subject to inflation
-( "Malaysian Ringgit" "ringgit" "sen"  "ISO4217" "MYR" "458" 100 100 "RM" )
-( "Mozambique Metical" "metical" "centavo" "ISO4217" "MZM" "508" 100 100 "" ) ;; 2006-07-01 "MZN" 1000
-( "Metical" "metical" "centavo" "ISO4217" "MZN" "943" 100 100 "MTn" )
-( "Namibia Dollar" "dollar" "cent" "ISO4217" "NAD" "516" 100 100 "N$" )
-( "Naira" "naira" "kobo"  "ISO4217" "NGN" "566" 100 100 "₦" )
-( "Nicaraguan Cordoba" "cordoba" "centavo" "ISO4217" "NIC" "558" 100 100 "" ) ;; 1990-10-13 "NIO" 5000000
-( "Cordoba Oro" "cordoba" "centavo" "ISO4217" "NIO" "558" 100 100 "C$" )
-( "Netherlands Guilder" "guilder" "cent" "ISO4217" "NLG" "528" 100 100 "" ) ;; 2002-01-01 "EUR" 2.20371
-( "Norwegian Krone" "krone" "ore"  "ISO4217" "NOK" "578" 100 100 "kr" )
-( "Nepalese Rupee" "rupee" "paise" "ISO4217" "NPR" "524" 100 100 "₨" )
-( "New Zealand Dollar" "dollar" "cent" "ISO4217" "NZD" "554" 100 100 "NZ$" )
-( "Rial Omani" "rial" "baisa" "ISO4217" "OMR" "512" 1000 1000 "ر.ع." )
-( "Balboa" "balboa" "centésimo" "ISO4217" "PAB" "590" 100 100 "฿" )
-( "Nuevo Sol" "nuevo sol" "centimo"  "ISO4217" "PEN" "604" 100 100 "S/." )
-( "Kina" "kina" "toea" "ISO4217" "PGK" "598" 100 100 "K" )
-( "Philippine Peso" "peso" "centavo" "ISO4217" "PHP" "608" 100 100 "₱" )
-( "Pakistan Rupee" "rupee" "paisa" "ISO4217" "PKR" "586" 100 100 "Rs" )
-( "Zloty" "zloty" "grosz" "ISO4217" "PLN" "985" 100 100 "zł" )
-( "Portuguese Escudo" "escudo" "centavo" "ISO4217" "PTE" "620" 100 100 "$" ) ;; 2002-01-01 "EUR" 200.482
-( "Guarani" "guarani" "centimo" "ISO4217" "PYG" "600" 100 100 "₲" ) ;; scheduled revaluation 2011
-( "Qatari Rial" "rial" "dirham" "ISO4217" "QAR" "634" 100 100 "ر.ق" )
-( "Romanian Old Leu" "leu" "ban"  "ISO4217" "ROL" "642" 100 100 "" ) ;; 2005-07-01 "RON" 10000
-( "New Leu" "leu" "ban"  "ISO4217" "RON" "946" 100 100 "" ) ;; scheduled 2012..14: EUR
-( "Serbian Dinar" "dinar" "para"  "ISO4217" "RSD"  "941" 100 100 "" )
-( "Russian Rouble" "rouble" "kopek" "ISO4217" "RUB" "643" 100 100 "руб" ) ;; RUR: 1998-01-1 "RUB" 1000; see bug #393185
-( "Rwanda Franc" "franc" "centime" "ISO4217" "RWF" "646" 100 100 "RF" )
-( "Saudi Riyal" "riyal" "halala"  "ISO4217" "SAR" "682" 100 100 "ر.س" )
-( "Solomon Islands Dollar" "dollar" "cent"  "ISO4217" "SBD" "090" 100 100 "SI$" )
-( "Seychelles Rupee" "rupee" "cent" "ISO4217" "SCR" "690" 100 100 "SR" )
-( "Sudanese Dinar" "dinar" "piastre"  "ISO4217" "SDD" "736" 100 100 "" ) ;; 2007-07-01 "SDG" 100, reunite with South
-( "Sudanese Pound" "pound" "qirsh"  "ISO4217" "SDG" "938" 100 100 "" )
-( "Sudanese Pound" "pound" "piastre"  "ISO4217" "SDP" "736" 100 100 "" ) ;; 1992-01-01 "SDD" 10, but only in the North
-( "Swedish Krona" "krona" "ore"  "ISO4217" "SEK" "752" 100 100 "kr" )
-( "Singapore Dollar" "dollar" "cent" "ISO4217" "SGD" "702" 100 100 "S$" )
-( "Saint Helena Pound" "pound" "penny"  "ISO4217" "SHP"  "654" 100 100 "£" )
-( "Slovenian Tolar" "tolar" "stotin"  "ISO4217" "SIT" "705" 100 100 "" ) ;; 2007-01-01 "EUR" 239.640
-( "Slovak Koruna" "koruna" "halier"  "ISO4217" "SKK" "703" 100 100 "" ) ;; 2009-01-01 "EUR" 30.126
-( "Leone" "leone" "cent"  "ISO4217" "SLL" "694" 100 100 "Le" )
-( "Somali Shilling" "shilling" "centisimi" "ISO4217" "SOS" "706" 100 100 "SoSh" )
-( "Surinam Dollar" "dollar" "cent"  "ISO4217" "SRD" "968" 100 100 "$" )
-( "Suriname Guilder" "guilder" "cent"  "ISO4217" "SRG" "740" 100 100 "" ) ;; 2004-01-01 "SRD" 1000
-( "Dobra" "dobra" "centimo" "ISO4217" "STD" "678" 100 100 "Db" )
-( "El Salvador Colon" "colon" "centavo" "ISO4217" "SVC" "222" 100 100 "" ) ;; 2001-01-01 "USD" 8.75
-( "Syrian Pound" "pound" "qirsh"  "ISO4217" "SYP" "760" 100 100 "" )
-( "Lilangeni" "lilangeni" "cent"  "ISO4217" "SZL" "748" 100 100 "L" )
-( "Baht" "baht" "satang" "ISO4217" "THB" "764" 100 100 "฿" )
-( "Tajik Rouble" "ruble" "ruble" "ISO4217" "TJR" "762" 1 1 "" ) ;; 2002-11-01 "TJS" 1000
-( "Somoni" "somoni" "diram" "ISO4217" "TJS" "972" 100 100 "" )
-( "Manat" "manat" "tenga" "ISO4217" "TMM" "795" 100 100 "" ) ;; 2009-01-01 "TMT" 5000
-( "Manat" "manat" "teňňe" "ISO4217" "TMT" "934" 100 100 "m" )
-( "Tunisian Dinar" "dinar" "milim" "ISO4217" "TND" "788" 1000 1000 "د.ت" )
-( "Pa'anga" "Pa'anga" "seniti" "ISO4217" "TOP" "776" 100 100 "T$" )
-( "Turkish Lira" "lira" "kuruş" "ISO4217" "TRY" "949" 100 100 "₤" )
-( "Trinidad and Tobago Dollar" "dollar" "cent" "ISO4217" "TTD" "780" 100 100 "TT$" )
-( "New Taiwan Dollar" "dollar" "cent" "ISO4217" "TWD" "901" 100 100 "NT$" )
-( "Tanzanian Shilling" "shilling" "senti"  "ISO4217" "TZS" "834" 100 100 "/" )
-( "Hryvnia" "hryvnia" "kopiyka"  "ISO4217" "UAH" "980" 100 100 "â‚´" )
-( "Uganda Shilling" "shilling" "cent"  "ISO4217" "UGX" "800" 100 100  "USh" )
-( "US Dollar" "dollar" "cent" "ISO4217" "USD" "840" 100 100 "$" )
-( "US Dollar (Next day)" "dollar" "cent" "ISO4217" "USN" "997" 100 100 "$n" ) ;; funds code
-( "US Dollar (Same day)" "dollar" "cent" "ISO4217" "USS" "998" 100 100 "$s" ) ;; funds code
-( "Uruguay Peso en Unidades Indexadas" "UI" "centesimo" "ISO4217" "UYI" "940" 100 100 "UI" )
-( "Peso Uruguayo" "peso" "centesimo" "ISO4217" "UYU" "858" 100 100 "$U" )
-( "Uzbekistan Sum" "so‘m" "tiyin" "ISO4217" "UZS" "860" 100 100 "som" )
-( "Venezuela Bolívar" "bolivar" "centimo" "ISO4217" "VEB" "862" 100 100 "" ) ;; 2008-01-01 "VEF" 1000
-( "Bolivar Fuerte" "bolivar" "centimo" "ISO4217" "VEF" "937" 100 100 "Bs." )
-( "Dong" "đồng" "xu" "ISO4217" "VND" "704" 100 100 "₫" )
-( "Vatu" "vatu" "centime" "ISO4217" "VUV" "548" 1 1 "Vt" )
-( "Tala" "tala" "sene" "ISO4217" "WST" "882" 100 100 "WS$" )
-( "Yemeni Rial" "riyal" "fils" "ISO4217" "YER" "886" 100 100 "Rl" )
-( "Yugoslavian Dinar" "dinar" "para"  "ISO4217" "YUM"  "890" 100 100 "" ) ;; 2003 replaced by RSD 1
-( "Rand" "rand" "cent" "ISO4217" "ZAR" "710" 100 100 "R" )
-( "Kwacha (old)" "kwacha" "ngwee"  "ISO4217" "ZMK" "894" 100 100 "ZK" ) ;; replaced by ZMW from 2013-01-01 onwards
-( "Zambian Kwacha" "kwacha" "ngwee" "ISO4217" "ZMW" "967" 100 100 "ZK" ) ;; replaced ZMK from 2013-01-01 onwards
-( "Zimbabwe Dollar" "dollar" "cent" "ISO4217" "ZWD" "716" 100 100 "" ) ;; 2006-08-01 "ZWN" 1000, 2008-08-01 "ZWR" 10000000000, 2009-02-01 "ZWD" 1000000000000
-( "Zimbabwe Dollar" "dollar" "cent" "ISO4217" "ZWL" "716" 100 100 "Z.$" ) ;; 2009-04 suspended for at least 1 year
-
-;; multinational
-( "CFA Franc BEAC" "franc" "centime" "ISO4217" "XAF" "950" 1 100 "" ) ;; Banque des États de l'Afrique Centrale
-;; XB* should be replaced by EUR, if I am right
-( "East Caribbean Dollar" "dollar" "cent" "ISO4217" "XCD" "951" 100 100 "EC$" ) ;; Organisation of Eastern Caribbean States
-( "SDR" "SDR" "SDR" "ISO4217" "XDR" "960" 1 1 "" ) ;; International Monetary Funds Special Drawing Rights
-( "Gold-Franc" "franc" "centime" "ISO4217" "XFO" "nil" 1 100 "" ) ;; Bank for International Settlements
-( "UIC-Franc" "franc" "centime" "ISO4217" "XFU" "nil" 1 100 "" ) ;; Union Internationale des Chemins de fer
-( "CFA Franc BCEAO" "franc" "centime" "ISO4217" "XOF" "952" 1 100 "" ) ;; Banque Centrale des États de l'Afrique de l'Ouest
-( "CFP Franc" "franc" "centime" "ISO4217" "XPF" "953" 1 100 "" ) ;; Communauté Financière du Pacifique
-( "Code for testing purposes" "TEST" "test" "ISO4217" "XTS" "963" 1 1000000 "" ) ;; Code reserved for testing purposes
-( "No currency" "" "" "ISO4217" "XXX" "999" 1 1000000 "" )
-
-;; precious metals
-( "Silver" "ounce" "ounce" "ISO4217" "XAG" "961" 1 1000000 "" )
-( "Gold" "ounce" "ounce" "ISO4217" "XAU" "959" 1 1000000 "" )
-( "Palladium" "ounce" "ounce" "ISO4217" "XPD" "964" 1 1000000 "" )
-( "Platinum" "ounce" "ounce" "ISO4217" "XPT" "962" 1 1000000 "" )
diff --git a/src/engine/iso-4217-currencies.xml b/src/engine/iso-4217-currencies.xml
new file mode 100644
index 0000000..9a9a263
--- /dev/null
+++ b/src/engine/iso-4217-currencies.xml
@@ -0,0 +1,3009 @@
+<!-- currency descriptions for ISO4217 currencies.
+
+  This file is not currently used at runtime.  It's used to generate
+  the contents of iso-4217-currencies.c.
+
+  You can find Currency Information from the following sites:
+    http://www.evertype.com/standards/iso4217/iso4217-en.html
+    http://www.xe.com/iso4217.htm
+    http://www.thefinancials.com/vortex/CurrencyFormats.html
+  But currently used was
+    http://en.wikipedia.org/wiki/ISO4217 and relatives and the official at
+    http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/currency_codes/currency_codes_list-1.htm
+
+  Learned from some bugs (543061, 564450), please keep in mind:
+  If there are no coins for subunits, subunits might still be in use on the paper
+
+  Format:
+  <currency
+    isocode
+    fullname
+    unitname*
+    partname*
+    namespace
+    exchange-code
+    parts-per-unit*
+    smallest-fraction
+    local-symbol
+  />
+  planned extensions: replace-date, by-ISO, frozen-rate [x old : 1 new]
+
+  where * means currently unused;
+  fullname should be the same as in /usr/share/xml/iso-codes/iso_4217.xml from package iso-codes
+  exchange-code is stored in ISIN/CUSIP;
+  see iso-currencies-to-c for details and recent changes.
+  Sort order by ISO codes for simpler maintainance
+-->
+
+
+<currencylist>
+<!-- "ADF" - "Andorran Franc"
+  2002-01-01 "FRF" 1  ;; = 1/1 French Franc replaced by EUR
+-->
+<currency
+  isocode="ADF"
+  fullname="Andorran Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="950"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚£"
+/>
+<!-- "ADP" - "Andorran Peseta"
+  2002-01-01 "ESP" 1 ;; = 1/1 Spanish Peseta replaced by EUR
+-->
+<currency
+  isocode="ADP"
+  fullname="Andorran Peseta"
+  unitname="peseta"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="724"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₧"
+/>
+<!-- "AED" - "UAE Dirham"
+  There is also an arabic symbol for "Dhs"
+-->
+<currency
+  isocode="AED"
+  fullname="UAE Dirham"
+  unitname="dirham"
+  partname="fil"
+  namespace="ISO4217"
+  exchange-code="784"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Dhs"
+/>
+<!-- "AFA" - "Afghani"
+  through 2003-01-02 "AFN" 1000
+-->
+<currency
+  isocode="AFA"
+  fullname="Afghani"
+  unitname="afghani"
+  partname="pul"
+  namespace="ISO4217"
+  exchange-code="004"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "AFN" - "Afghani"
+-->
+<currency
+  isocode="AFN"
+  fullname="Afghani"
+  unitname="afghani"
+  partname="pul"
+  namespace="ISO4217"
+  exchange-code="971"
+  parts-per-unit="1"
+  smallest-fraction="1"
+  local-symbol=""
+/>
+<!-- "ALL" - "Lek"
+-->
+<currency
+  isocode="ALL"
+  fullname="Lek"
+  unitname="lek"
+  partname="qindarka"
+  namespace="ISO4217"
+  exchange-code="008"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "AMD" - "Armenian Dram"
+-->
+<currency
+  isocode="AMD"
+  fullname="Armenian Dram"
+  unitname="dram"
+  partname="Luma"
+  namespace="ISO4217"
+  exchange-code="051"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Õ¤Ö€."
+/>
+<!-- "ANG" - "Netherlands Antillian Guilder"
+  through 2010-10 ???
+-->
+<currency
+  isocode="ANG"
+  fullname="Netherlands Antillian Guilder"
+  unitname="guilder"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="532"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="NAÆ’"
+/>
+<!-- "AOA" - "Kwanza"
+-->
+<currency
+  isocode="AOA"
+  fullname="Kwanza"
+  unitname="kwanza"
+  partname="cêntimos"
+  namespace="ISO4217"
+  exchange-code="973"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Kz"
+/>
+<!-- "AON" - "Angola New Kwanza"
+  1995-07-01 "AOR" 1000
+-->
+<currency
+  isocode="AON"
+  fullname="Angola New Kwanza"
+  unitname="new kwanza"
+  partname="lwei"
+  namespace="ISO4217"
+  exchange-code="024"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "AOR" - "Angola Kwanza Reajustado"
+  2000-02-01 "AOA" 1000000
+-->
+<currency
+  isocode="AOR"
+  fullname="Angola Kwanza Reajustado"
+  unitname="reajustado kwanza"
+  partname="centimos"
+  namespace="ISO4217"
+  exchange-code="982"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "ARA" - "Argentine Austral"
+  1992-01-01 "ARS" 10000
+-->
+<currency
+  isocode="ARA"
+  fullname="Argentine Austral"
+  unitname="austral"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="XXX"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "ARS" - "Argentine Peso"
+-->
+<currency
+  isocode="ARS"
+  fullname="Argentine Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="032"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "ATS" - "Austrian Schilling"
+  2002-01-01 "EUR" 13.7603
+-->
+<currency
+  isocode="ATS"
+  fullname="Austrian Schilling"
+  unitname="shilling"
+  partname="groschen"
+  namespace="ISO4217"
+  exchange-code="040"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="öS"
+/>
+<!-- "AUD" - "Australian Dollar"
+-->
+<currency
+  isocode="AUD"
+  fullname="Australian Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="036"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$"
+/>
+<!-- "AWG" - "Aruban Guilder"
+  ""
+-->
+<currency
+  isocode="AWG"
+  fullname="Aruban Guilder"
+  unitname="florin"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="533"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Afl."
+/>
+<!-- "AZM" - "Azerbaijanian Manat"
+  2006-01-01 "AZN" 5000
+-->
+<currency
+  isocode="AZM"
+  fullname="Azerbaijanian Manat"
+  unitname="manat"
+  partname="qəpik"
+  namespace="ISO4217"
+  exchange-code="031"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "AZN" - "Azerbaijanian Manat"
+  "m" should be  a 90° rotated € sign, but currently not encoded in Unicode
+-->
+<currency
+  isocode="AZN"
+  fullname="Azerbaijanian Manat"
+  unitname="manat"
+  partname="qəpik"
+  namespace="ISO4217"
+  exchange-code="944"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="m"
+/>
+<!-- "BAD" - "Bosnia and Herzegovina Dinar"
+  1998-06-22 "BAM" 100 ;; there was a revaluation 1994-08: 10000:1
+-->
+<currency
+  isocode="BAD"
+  fullname="Bosnia and Herzegovina Dinar"
+  unitname="B.H. dinar"
+  partname="para"
+  namespace="ISO4217"
+  exchange-code="070"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "BAM" - "Convertible Marks"
+-->
+<currency
+  isocode="BAM"
+  fullname="Convertible Marks"
+  unitname="B.H. mark"
+  partname="fening"
+  namespace="ISO4217"
+  exchange-code="977"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="KM"
+/>
+<!-- "BBD" - "Barbados Dollar"
+-->
+<currency
+  isocode="BBD"
+  fullname="Barbados Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="052"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Bds$"
+/>
+<!-- "BDT" - "Taka"
+-->
+<currency
+  isocode="BDT"
+  fullname="Taka"
+  unitname="taka"
+  partname="paisa"
+  namespace="ISO4217"
+  exchange-code="050"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="৳"
+/>
+<!-- "BEF" - "Belgian Franc"
+  2002-01-01 "EUR" 40.3399
+-->
+<currency
+  isocode="BEF"
+  fullname="Belgian Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="056"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="fr."
+/>
+<!-- "BGL" - "Bulgarian Lev A/99"
+  1999-07-05 "BGN" 1000
+-->
+<currency
+  isocode="BGL"
+  fullname="Bulgarian Lev A/99"
+  unitname="lev"
+  partname="stotinki"
+  namespace="ISO4217"
+  exchange-code="100"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "BGN" - "Bulgarian Lev"
+  scheduled replacement: 2012-01-01 "EUR" 1.95583 (=DEM)
+-->
+<currency
+  isocode="BGN"
+  fullname="Bulgarian Lev"
+  unitname="lev"
+  partname="stotinki"
+  namespace="ISO4217"
+  exchange-code="975"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="лв"
+/>
+<!-- "BHD" - "Bahraini Dinar"
+  ar:.د.ب
+-->
+<currency
+  isocode="BHD"
+  fullname="Bahraini Dinar"
+  unitname="dinar"
+  partname="fil"
+  namespace="ISO4217"
+  exchange-code="048"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="BD"
+/>
+<!-- "BIF" - "Burundi Franc"
+-->
+<currency
+  isocode="BIF"
+  fullname="Burundi Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="108"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="FBu"
+/>
+<!-- "BMD" - "Bermudian Dollar"
+-->
+<currency
+  isocode="BMD"
+  fullname="Bermudian Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="060"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="BD$"
+/>
+<!-- "BND" - "Brunei Dollar"
+-->
+<currency
+  isocode="BND"
+  fullname="Brunei Dollar"
+  unitname="dollar"
+  partname="sen"
+  namespace="ISO4217"
+  exchange-code="096"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="B$"
+/>
+<!-- "BOB" - "Boliviano"
+-->
+<currency
+  isocode="BOB"
+  fullname="Boliviano"
+  unitname="boliviano"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="068"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Bs."
+/>
+<!-- "BOV" - "Mvdol"
+  Mantenimiento de Valor respecto al Dólar
+-->
+<currency
+  isocode="BOV"
+  fullname="Mvdol"
+  unitname="mvdol"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="984"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "BRE" - "Brazilian Cruzeiro"
+  1993-08-01 "BRR" 1000
+-->
+<currency
+  isocode="BRE"
+  fullname="Brazilian Cruzeiro"
+  unitname="cruzeiro"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="076"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "BRL" - "Brazilian Real"
+-->
+<currency
+  isocode="BRL"
+  fullname="Brazilian Real"
+  unitname="real"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="986"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="R$"
+/>
+<!-- "BRR" - "Brazilian Cruzeiro Real"
+  1994-07-01 "BRL" 2750
+-->
+<currency
+  isocode="BRR"
+  fullname="Brazilian Cruzeiro Real"
+  unitname="cruzeiro"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="987"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "BSD" - "Bahamian Dollar"
+-->
+<currency
+  isocode="BSD"
+  fullname="Bahamian Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="044"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="B$"
+/>
+<!-- "BTN" - "Ngultrum"
+-->
+<currency
+  isocode="BTN"
+  fullname="Ngultrum"
+  unitname="ngultrum"
+  partname="chetrum"
+  namespace="ISO4217"
+  exchange-code="064"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Nu."
+/>
+<!-- "BWP" - "Pula"
+-->
+<currency
+  isocode="BWP"
+  fullname="Pula"
+  unitname="pula"
+  partname="thebe"
+  namespace="ISO4217"
+  exchange-code="072"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="P"
+/>
+<!-- "BYB" - "Belarussian Rouble"
+  2000-01-01 "BYR" 1000
+-->
+<currency
+  isocode="BYB"
+  fullname="Belarussian Rouble"
+  unitname="ruble"
+  partname="kapeyka"
+  namespace="ISO4217"
+  exchange-code=""
+  parts-per-unit="100"
+  smallest-fraction="1"
+  local-symbol=""
+/>
+<!-- "BYR" - "Belarussian Ruble"
+-->
+<currency
+  isocode="BYR"
+  fullname="Belarussian Ruble"
+  unitname="ruble"
+  partname="ruble"
+  namespace="ISO4217"
+  exchange-code="974"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol="Br"
+/>
+<!-- "BZD" - "Belize Dollar"
+-->
+<currency
+  isocode="BZD"
+  fullname="Belize Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="084"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="BZ$"
+/>
+<!-- "CAD" - "Canadian Dollar"
+-->
+<currency
+  isocode="CAD"
+  fullname="Canadian Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="124"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="C$"
+/>
+<!-- "CDF" - "Franc Congolais"
+-->
+<currency
+  isocode="CDF"
+  fullname="Franc Congolais"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="976"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="FC"
+/>
+<!-- "CHE" - "WIR Euro"
+  complementary currency by WIR Wirtschaftsring-Genossenschaft
+-->
+<currency
+  isocode="CHE"
+  fullname="WIR Euro"
+  unitname="euro"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="974"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "CHF" - "Swiss Franc"
+-->
+<currency
+  isocode="CHF"
+  fullname="Swiss Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="756"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="SFr."
+/>
+<!-- "CHW" - "WIR Franc"
+  complementary currency by WIR Wirtschaftsring-Genossenschaft
+-->
+<currency
+  isocode="CHW"
+  fullname="WIR Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="948"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "CLF" - "Unidades de fomento"
+  international secured loans; decimals not defined but required for conversion as of 2011-03-18 1 CLF = 21,560.19 CLP
+-->
+<currency
+  isocode="CLF"
+  fullname="Unidades de fomento"
+  unitname="UF"
+  partname=""
+  namespace="ISO4217"
+  exchange-code="990"
+  parts-per-unit="10000"
+  smallest-fraction="10000"
+  local-symbol=""
+/>
+<!-- "CLP" - "Chilean Peso"
+  "$" should have 2 strokes
+-->
+<currency
+  isocode="CLP"
+  fullname="Chilean Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="152"
+  parts-per-unit="100"
+  smallest-fraction="1"
+  local-symbol="$"
+/>
+<!-- "CNY" - "Yuan Renminbi"
+-->
+<currency
+  isocode="CNY"
+  fullname="Yuan Renminbi"
+  unitname="renminbi"
+  partname="fen"
+  namespace="ISO4217"
+  exchange-code="156"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="å…ƒ"
+/>
+<!-- "COP" - "Colombian Peso"
+-->
+<currency
+  isocode="COP"
+  fullname="Colombian Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="170"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$"
+/>
+<!-- "COU" - "Unidad de Valor Real"
+-->
+<currency
+  isocode="COU"
+  fullname="Unidad de Valor Real"
+  unitname="UVR"
+  partname="???"
+  namespace="ISO4217"
+  exchange-code="970"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "CRC" - "Costa Rican Colon"
+-->
+<currency
+  isocode="CRC"
+  fullname="Costa Rican Colon"
+  unitname="colon"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="188"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚¡"
+/>
+<!-- "CUP" - "Cuban Peso"
+-->
+<currency
+  isocode="CUP"
+  fullname="Cuban Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="192"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$MN"
+/>
+<!-- "CUC" - "Cuban Convertible Peso"
+-->
+<currency
+  isocode="CUC"
+  fullname="Cuban Convertible Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="931"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="CUC$"
+/>
+<!-- "CVE" - "Cape Verde Escudo"
+-->
+<currency
+  isocode="CVE"
+  fullname="Cape Verde Escudo"
+  unitname="escudo"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="132"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Esc"
+/>
+<!-- "CYP" - "Cyprus Pound"
+  2008-01-01 "EUR" 0.585274
+-->
+<currency
+  isocode="CYP"
+  fullname="Cyprus Pound"
+  unitname="pound"
+  partname="pence"
+  namespace="ISO4217"
+  exchange-code="196"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="£"
+/>
+<!-- "CZK" - "Czech Koruna"
+-->
+<currency
+  isocode="CZK"
+  fullname="Czech Koruna"
+  unitname="koruna"
+  partname="haleru"
+  namespace="ISO4217"
+  exchange-code="203"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Kč"
+/>
+<!-- "DEM" - "Deutsche Mark"
+  2002-01-01 "EUR" 1.95583
+-->
+<currency
+  isocode="DEM"
+  fullname="Deutsche Mark"
+  unitname="deutschemark"
+  partname="pfennig"
+  namespace="ISO4217"
+  exchange-code="280"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="DM"
+/>
+<!-- "DJF" - "Djibouti Franc"
+-->
+<currency
+  isocode="DJF"
+  fullname="Djibouti Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="262"
+  parts-per-unit="100"
+  smallest-fraction="1"
+  local-symbol="Fdj"
+/>
+<!-- "DKK" - "Danish Krone"
+-->
+<currency
+  isocode="DKK"
+  fullname="Danish Krone"
+  unitname="krone"
+  partname="øre"
+  namespace="ISO4217"
+  exchange-code="208"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="kr"
+/>
+<!-- "DOP" - "Dominican Peso"
+-->
+<currency
+  isocode="DOP"
+  fullname="Dominican Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="214"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="RD$"
+/>
+<!-- "DZD" - "Algerian Dinar"
+  ar.: 	دج
+-->
+<currency
+  isocode="DZD"
+  fullname="Algerian Dinar"
+  unitname="dinar"
+  partname="santeem"
+  namespace="ISO4217"
+  exchange-code="012"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="DA"
+/>
+<!-- "ECS" - "Ecuador Sucre"
+  2000-09-15 "USD" 25000
+-->
+<currency
+  isocode="ECS"
+  fullname="Ecuador Sucre"
+  unitname="sucre"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="218"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="S/."
+/>
+<!-- "EEK" - "Kroon"
+  2011-01-01 "EUR" 15.6466
+-->
+<currency
+  isocode="EEK"
+  fullname="Kroon"
+  unitname="kroon"
+  partname="sent"
+  namespace="ISO4217"
+  exchange-code="233"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="kr"
+/>
+<!-- "EGP" - "Egyptian Pound"
+  ar.:ج.م maleem=0.001 £E for accounting?
+-->
+<currency
+  isocode="EGP"
+  fullname="Egyptian Pound"
+  unitname="pound"
+  partname="qirsh"
+  namespace="ISO4217"
+  exchange-code="818"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="£E"
+/>
+<!-- "ERN" - "Nakfa"
+-->
+<currency
+  isocode="ERN"
+  fullname="Nakfa"
+  unitname="nakfa"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="232"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Nfa"
+/>
+<!-- "ESP" - "Spanish Peseta"
+  2002-01-01 "EUR" 166.386
+-->
+<currency
+  isocode="ESP"
+  fullname="Spanish Peseta"
+  unitname="peseta"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="724"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₧"
+/>
+<!-- "ETB" - "Ethiopian Birr"
+-->
+<currency
+  isocode="ETB"
+  fullname="Ethiopian Birr"
+  unitname="birr"
+  partname="santim"
+  namespace="ISO4217"
+  exchange-code="230"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Br"
+/>
+<!-- "EUR" - "Euro"
+-->
+<currency
+  isocode="EUR"
+  fullname="Euro"
+  unitname="euro"
+  partname="euro-cent"
+  namespace="ISO4217"
+  exchange-code="978"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="€"
+/>
+<!-- "FIM" - "Finnish Markka"
+  2002-01-01 "EUR" 5.94573
+-->
+<currency
+  isocode="FIM"
+  fullname="Finnish Markka"
+  unitname="markka"
+  partname="penni"
+  namespace="ISO4217"
+  exchange-code="246"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="mk"
+/>
+<!-- "FJD" - "Fiji Dollar"
+-->
+<currency
+  isocode="FJD"
+  fullname="Fiji Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="242"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="FJ$"
+/>
+<!-- "FKP" - "Falkland Islands Pound"
+-->
+<currency
+  isocode="FKP"
+  fullname="Falkland Islands Pound"
+  unitname="pound"
+  partname="pence"
+  namespace="ISO4217"
+  exchange-code="238"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="FK£"
+/>
+<!-- "FRF" - "French Franc"
+  2002-01-01 "EUR" 6.55957
+-->
+<currency
+  isocode="FRF"
+  fullname="French Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="250"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚£"
+/>
+<!-- "GBP" - "Pound Sterling"
+-->
+<currency
+  isocode="GBP"
+  fullname="Pound Sterling"
+  unitname="pound"
+  partname="pence"
+  namespace="ISO4217"
+  exchange-code="826"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="£"
+/>
+<!-- "GEL" - "Lari"
+-->
+<currency
+  isocode="GEL"
+  fullname="Lari"
+  unitname="lari"
+  partname="tetri"
+  namespace="ISO4217"
+  exchange-code="981"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "GHC" - "Cedi"
+  2007-07-01 "GHS" 10000
+-->
+<currency
+  isocode="GHC"
+  fullname="Cedi"
+  unitname="cedi"
+  partname="pesewa"
+  namespace="ISO4217"
+  exchange-code="288"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "GHS" - "Ghana Cedi"
+-->
+<currency
+  isocode="GHS"
+  fullname="Ghana Cedi"
+  unitname="cedi"
+  partname="pesewa"
+  namespace="ISO4217"
+  exchange-code="936"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="GH₵"
+/>
+<!-- "GIP" - "Gibraltar Pound"
+-->
+<currency
+  isocode="GIP"
+  fullname="Gibraltar Pound"
+  unitname="pound"
+  partname="pence"
+  namespace="ISO4217"
+  exchange-code="292"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="£"
+/>
+<!-- "GMD" - "Dalasi"
+-->
+<currency
+  isocode="GMD"
+  fullname="Dalasi"
+  unitname="dalasi"
+  partname="butut"
+  namespace="ISO4217"
+  exchange-code="270"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="D"
+/>
+<!-- "GNF" - "Guinea Franc"
+-->
+<currency
+  isocode="GNF"
+  fullname="Guinea Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="324"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="FG"
+/>
+<!-- "GRD" - "Greek Drachma"
+  2002-01-01 "EUR" 340.750
+-->
+<currency
+  isocode="GRD"
+  fullname="Greek Drachma"
+  unitname="drachma"
+  partname="lepta"
+  namespace="ISO4217"
+  exchange-code="200"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Δρ."
+/>
+<!-- "GTQ" - "Quetzal"
+-->
+<currency
+  isocode="GTQ"
+  fullname="Quetzal"
+  unitname="quetzal"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="320"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Q"
+/>
+<!-- "GWP" - "Guinea-Bissau Peso"
+  1997-01-01 "XOF" 65
+-->
+<currency
+  isocode="GWP"
+  fullname="Guinea-Bissau Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="624"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "GYD" - "Guyana Dollar"
+-->
+<currency
+  isocode="GYD"
+  fullname="Guyana Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="328"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="G$"
+/>
+<!-- "HKD" - "Hong Kong Dollar"
+-->
+<currency
+  isocode="HKD"
+  fullname="Hong Kong Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="344"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="HK$"
+/>
+<!-- "HNL" - "Lempira"
+-->
+<currency
+  isocode="HNL"
+  fullname="Lempira"
+  unitname="lempira"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="340"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="L"
+/>
+<!-- "HRK" - "Croatian Kuna"
+-->
+<currency
+  isocode="HRK"
+  fullname="Croatian Kuna"
+  unitname="kuna"
+  partname="lipa"
+  namespace="ISO4217"
+  exchange-code="191"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="kn"
+/>
+<!-- "HTG" - "Gourde"
+-->
+<currency
+  isocode="HTG"
+  fullname="Gourde"
+  unitname="gourde"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="332"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="G"
+/>
+<!-- "HUF" - "Forint"
+-->
+<currency
+  isocode="HUF"
+  fullname="Forint"
+  unitname="forint"
+  partname="fillér"
+  namespace="ISO4217"
+  exchange-code="348"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol="Ft"
+/>
+<!-- "IDR" - "Rupiah"
+-->
+<currency
+  isocode="IDR"
+  fullname="Rupiah"
+  unitname="rupiah"
+  partname="sen"
+  namespace="ISO4217"
+  exchange-code="360"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol="Rp"
+/>
+<!-- "IEP" - "Irish Pound"
+  2002-01-01 "EUR" 0.787564
+-->
+<currency
+  isocode="IEP"
+  fullname="Irish Pound"
+  unitname="punt"
+  partname="pingin"
+  namespace="ISO4217"
+  exchange-code="372"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="£"
+/>
+<!-- "ILS" - "New Israeli Sheqel"
+-->
+<currency
+  isocode="ILS"
+  fullname="New Israeli Sheqel"
+  unitname="new shekel"
+  partname="agora"
+  namespace="ISO4217"
+  exchange-code="376"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₪"
+/>
+<!-- "INR" - "Indian Rupee"
+-->
+<currency
+  isocode="INR"
+  fullname="Indian Rupee"
+  unitname="rupee"
+  partname="paisa"
+  namespace="ISO4217"
+  exchange-code="356"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₹"
+/>
+<!-- "IQD" - "Iraqi Dinar"
+-->
+<currency
+  isocode="IQD"
+  fullname="Iraqi Dinar"
+  unitname="dinar"
+  partname="fil"
+  namespace="ISO4217"
+  exchange-code="368"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="ع.د"
+/>
+<!-- "IRR" - "Iranian Rial"
+-->
+<currency
+  isocode="IRR"
+  fullname="Iranian Rial"
+  unitname="rial"
+  partname="dinar"
+  namespace="ISO4217"
+  exchange-code="364"
+  parts-per-unit="1"
+  smallest-fraction="1"
+  local-symbol="﷼﷼"
+/>
+<!-- "ISK" - "Iceland Krona"
+-->
+<currency
+  isocode="ISK"
+  fullname="Iceland Krona"
+  unitname="krona"
+  partname="aur"
+  namespace="ISO4217"
+  exchange-code="352"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol="kr"
+/>
+<!-- "ITL" - "Italian Lira"
+  2002-01-01 "EUR" 1936.27
+-->
+<currency
+  isocode="ITL"
+  fullname="Italian Lira"
+  unitname="lira"
+  partname="lira"
+  namespace="ISO4217"
+  exchange-code="380"
+  parts-per-unit="1"
+  smallest-fraction="1"
+  local-symbol="₤"
+/>
+<!-- "JMD" - "Jamaican Dollar"
+-->
+<currency
+  isocode="JMD"
+  fullname="Jamaican Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="388"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="J$"
+/>
+<!-- "JOD" - "Jordanian Dinar"
+-->
+<currency
+  isocode="JOD"
+  fullname="Jordanian Dinar"
+  unitname="dinar"
+  partname="fil"
+  namespace="ISO4217"
+  exchange-code="400"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="JD"
+/>
+<!-- "JPY" - "Yen"
+-->
+<currency
+  isocode="JPY"
+  fullname="Yen"
+  unitname="yen"
+  partname="sen"
+  namespace="ISO4217"
+  exchange-code="392"
+  parts-per-unit="100"
+  smallest-fraction="1"
+  local-symbol="Â¥"
+/>
+<!-- "KES" - "Kenyan Shilling"
+-->
+<currency
+  isocode="KES"
+  fullname="Kenyan Shilling"
+  unitname="shilling"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="404"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Ksh"
+/>
+<!-- "KGS" - "Som"
+-->
+<currency
+  isocode="KGS"
+  fullname="Som"
+  unitname="som"
+  partname="tyiyn"
+  namespace="ISO4217"
+  exchange-code="417"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "KHR" - "Riel"
+-->
+<currency
+  isocode="KHR"
+  fullname="Riel"
+  unitname="riel"
+  partname="sen"
+  namespace="ISO4217"
+  exchange-code="116"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "KMF" - "Comoro Franc"
+-->
+<currency
+  isocode="KMF"
+  fullname="Comoro Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="174"
+  parts-per-unit="100"
+  smallest-fraction="1"
+  local-symbol="FC"
+/>
+<!-- "KPW" - "North Korean Won"
+-->
+<currency
+  isocode="KPW"
+  fullname="North Korean Won"
+  unitname="won"
+  partname="chon"
+  namespace="ISO4217"
+  exchange-code="408"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚©"
+/>
+<!-- "KRW" - "Won"
+-->
+<currency
+  isocode="KRW"
+  fullname="Won"
+  unitname="won"
+  partname="chon"
+  namespace="ISO4217"
+  exchange-code="410"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol="â‚©"
+/>
+<!-- "KWD" - "Kuwaiti Dinar"
+-->
+<currency
+  isocode="KWD"
+  fullname="Kuwaiti Dinar"
+  unitname="dinar"
+  partname="fils"
+  namespace="ISO4217"
+  exchange-code="414"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="د.ك"
+/>
+<!-- "KYD" - "Cayman Islands Dollar"
+-->
+<currency
+  isocode="KYD"
+  fullname="Cayman Islands Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="136"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="CI$"
+/>
+<!-- "KZT" - "Tenge"
+-->
+<currency
+  isocode="KZT"
+  fullname="Tenge"
+  unitname="tenge"
+  partname="tiyn"
+  namespace="ISO4217"
+  exchange-code="398"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₸"
+/>
+<!-- "LAK" - "Kip"
+-->
+<currency
+  isocode="LAK"
+  fullname="Kip"
+  unitname="kip"
+  partname="att"
+  namespace="ISO4217"
+  exchange-code="418"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚­"
+/>
+<!-- "LBP" - "Lebanese Pound"
+-->
+<currency
+  isocode="LBP"
+  fullname="Lebanese Pound"
+  unitname="pound"
+  partname="piastre"
+  namespace="ISO4217"
+  exchange-code="422"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Ù„.Ù„"
+/>
+<!-- "LKR" - "Sri Lanka Rupee"
+-->
+<currency
+  isocode="LKR"
+  fullname="Sri Lanka Rupee"
+  unitname="rupee"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="144"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₨"
+/>
+<!-- "LRD" - "Liberian Dollar"
+-->
+<currency
+  isocode="LRD"
+  fullname="Liberian Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="430"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="L$"
+/>
+<!-- "LSL" - "Loti"
+-->
+<currency
+  isocode="LSL"
+  fullname="Loti"
+  unitname="loti"
+  partname="sente"
+  namespace="ISO4217"
+  exchange-code="426"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="M"
+/>
+<!-- "LTL" - "Lithuanian Litas"
+-->
+<currency
+  isocode="LTL"
+  fullname="Lithuanian Litas"
+  unitname="litas"
+  partname="centas"
+  namespace="ISO4217"
+  exchange-code="440"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Lt"
+/>
+<!-- "LUF" - "Luxembourg Franc"
+  2002-01-01 "EUR" 40.3399
+-->
+<currency
+  isocode="LUF"
+  fullname="Luxembourg Franc"
+  unitname="frang"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="442"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Flux"
+/>
+<!-- "LVL" - "Latvian Lats"
+  Valid from 2. may 2009. till 31. december 2013, now "EUR" 0.702804
+-->
+<currency
+  isocode="LVL"
+  fullname="Latvian Lats"
+  unitname="lats"
+  partname="santīms"
+  namespace="ISO4217"
+  exchange-code="428"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Ls"
+/>
+<!-- "LYD" - "Libyan Dinar"
+-->
+<currency
+  isocode="LYD"
+  fullname="Libyan Dinar"
+  unitname="dinar"
+  partname="dirham"
+  namespace="ISO4217"
+  exchange-code="434"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="ل.د"
+/>
+<!-- "MAD" - "Moroccan Dirham"
+-->
+<currency
+  isocode="MAD"
+  fullname="Moroccan Dirham"
+  unitname="dirham"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="504"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="د.م"
+/>
+<!-- "MDL" - "Moldovan Leu"
+-->
+<currency
+  isocode="MDL"
+  fullname="Moldovan Leu"
+  unitname="leu"
+  partname="ban"
+  namespace="ISO4217"
+  exchange-code="498"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "MGA" - "Malagasy Ariary"
+-->
+<currency
+  isocode="MGA"
+  fullname="Malagasy Ariary"
+  unitname="ariary"
+  partname="iraimbilanja"
+  namespace="ISO4217"
+  exchange-code="969"
+  parts-per-unit="5"
+  smallest-fraction="5"
+  local-symbol=""
+/>
+<!-- "MGF" - "Malagasy Franc"
+  2003-07-31 "MGA" 5
+-->
+<currency
+  isocode="MGF"
+  fullname="Malagasy Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="450"
+  parts-per-unit="500"
+  smallest-fraction="500"
+  local-symbol=""
+/>
+<!-- "MKD" - "Denar"
+-->
+<currency
+  isocode="MKD"
+  fullname="Denar"
+  unitname="denar"
+  partname="deni"
+  namespace="ISO4217"
+  exchange-code="807"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="ден"
+/>
+<!-- "MLF" - "Mali Franc"
+  1984-07-01 "XOF" 2
+-->
+<currency
+  isocode="MLF"
+  fullname="Mali Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="466"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "MMK" - "Kyat"
+-->
+<currency
+  isocode="MMK"
+  fullname="Kyat"
+  unitname="kyat"
+  partname="pya"
+  namespace="ISO4217"
+  exchange-code="104"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="K"
+/>
+<!-- "MNT" - "Tugrik"
+-->
+<currency
+  isocode="MNT"
+  fullname="Tugrik"
+  unitname="tugrik"
+  partname="mongo"
+  namespace="ISO4217"
+  exchange-code="496"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚®"
+/>
+<!-- "MOP" - "Pataca"
+-->
+<currency
+  isocode="MOP"
+  fullname="Pataca"
+  unitname="pataca"
+  partname="avo"
+  namespace="ISO4217"
+  exchange-code="446"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="MOP$"
+/>
+<!-- "MRO" - "Ouguiya"
+-->
+<currency
+  isocode="MRO"
+  fullname="Ouguiya"
+  unitname="ouguiya"
+  partname="khoum"
+  namespace="ISO4217"
+  exchange-code="478"
+  parts-per-unit="5"
+  smallest-fraction="5"
+  local-symbol="UM"
+/>
+<!-- "MTL" - "Maltese Lira"
+  2008-01-01 "EUR" 0.4293
+-->
+<currency
+  isocode="MTL"
+  fullname="Maltese Lira"
+  unitname="lira"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="470"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Lm"
+/>
+<!-- "MUR" - "Mauritius Rupee"
+-->
+<currency
+  isocode="MUR"
+  fullname="Mauritius Rupee"
+  unitname="rupee"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="480"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="R"
+/>
+<!-- "MVR" - "Rufiyaa"
+-->
+<currency
+  isocode="MVR"
+  fullname="Rufiyaa"
+  unitname="rufiyaa"
+  partname="laari"
+  namespace="ISO4217"
+  exchange-code="462"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=".Þƒ"
+/>
+<!-- "MWK" - "Kwacha"
+-->
+<currency
+  isocode="MWK"
+  fullname="Kwacha"
+  unitname="kwacha"
+  partname="tambala"
+  namespace="ISO4217"
+  exchange-code="454"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="MK"
+/>
+<!-- "MXN" - "Mexican Peso"
+  since Jan 1993 (1000 MXP = 1 MXN)
+-->
+<currency
+  isocode="MXN"
+  fullname="Mexican Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="484"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Mex$"
+/>
+<!-- "MXV" - "Mexican Unidad de Inversion (UDI)"
+  fund index based; used for credits, not subject to inflation
+-->
+<currency
+  isocode="MXV"
+  fullname="Mexican Unidad de Inversion (UDI)"
+  unitname="UDI"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="979"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "MYR" - "Malaysian Ringgit"
+-->
+<currency
+  isocode="MYR"
+  fullname="Malaysian Ringgit"
+  unitname="ringgit"
+  partname="sen"
+  namespace="ISO4217"
+  exchange-code="458"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="RM"
+/>
+<!-- "MZM" - "Mozambique Metical"
+  2006-07-01 "MZN" 1000
+-->
+<currency
+  isocode="MZM"
+  fullname="Mozambique Metical"
+  unitname="metical"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="508"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "MZN" - "Metical"
+-->
+<currency
+  isocode="MZN"
+  fullname="Metical"
+  unitname="metical"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="943"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="MTn"
+/>
+<!-- "NAD" - "Namibia Dollar"
+-->
+<currency
+  isocode="NAD"
+  fullname="Namibia Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="516"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="N$"
+/>
+<!-- "NGN" - "Naira"
+-->
+<currency
+  isocode="NGN"
+  fullname="Naira"
+  unitname="naira"
+  partname="kobo"
+  namespace="ISO4217"
+  exchange-code="566"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₦"
+/>
+<!-- "NIC" - "Nicaraguan Cordoba"
+  1990-10-13 "NIO" 5000000
+-->
+<currency
+  isocode="NIC"
+  fullname="Nicaraguan Cordoba"
+  unitname="cordoba"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="558"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "NIO" - "Cordoba Oro"
+-->
+<currency
+  isocode="NIO"
+  fullname="Cordoba Oro"
+  unitname="cordoba"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="558"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="C$"
+/>
+<!-- "NLG" - "Netherlands Guilder"
+  2002-01-01 "EUR" 2.20371
+-->
+<currency
+  isocode="NLG"
+  fullname="Netherlands Guilder"
+  unitname="guilder"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="528"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "NOK" - "Norwegian Krone"
+-->
+<currency
+  isocode="NOK"
+  fullname="Norwegian Krone"
+  unitname="krone"
+  partname="ore"
+  namespace="ISO4217"
+  exchange-code="578"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="kr"
+/>
+<!-- "NPR" - "Nepalese Rupee"
+-->
+<currency
+  isocode="NPR"
+  fullname="Nepalese Rupee"
+  unitname="rupee"
+  partname="paise"
+  namespace="ISO4217"
+  exchange-code="524"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₨"
+/>
+<!-- "NZD" - "New Zealand Dollar"
+-->
+<currency
+  isocode="NZD"
+  fullname="New Zealand Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="554"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="NZ$"
+/>
+<!-- "OMR" - "Rial Omani"
+-->
+<currency
+  isocode="OMR"
+  fullname="Rial Omani"
+  unitname="rial"
+  partname="baisa"
+  namespace="ISO4217"
+  exchange-code="512"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="ر.ع."
+/>
+<!-- "PAB" - "Balboa"
+-->
+<currency
+  isocode="PAB"
+  fullname="Balboa"
+  unitname="balboa"
+  partname="centésimo"
+  namespace="ISO4217"
+  exchange-code="590"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="฿"
+/>
+<!-- "PEN" - "Nuevo Sol"
+-->
+<currency
+  isocode="PEN"
+  fullname="Nuevo Sol"
+  unitname="nuevo sol"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="604"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="S/."
+/>
+<!-- "PGK" - "Kina"
+-->
+<currency
+  isocode="PGK"
+  fullname="Kina"
+  unitname="kina"
+  partname="toea"
+  namespace="ISO4217"
+  exchange-code="598"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="K"
+/>
+<!-- "PHP" - "Philippine Peso"
+-->
+<currency
+  isocode="PHP"
+  fullname="Philippine Peso"
+  unitname="peso"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="608"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₱"
+/>
+<!-- "PKR" - "Pakistan Rupee"
+-->
+<currency
+  isocode="PKR"
+  fullname="Pakistan Rupee"
+  unitname="rupee"
+  partname="paisa"
+  namespace="ISO4217"
+  exchange-code="586"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Rs"
+/>
+<!-- "PLN" - "Zloty"
+-->
+<currency
+  isocode="PLN"
+  fullname="Zloty"
+  unitname="zloty"
+  partname="grosz"
+  namespace="ISO4217"
+  exchange-code="985"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="zł"
+/>
+<!-- "PTE" - "Portuguese Escudo"
+  2002-01-01 "EUR" 200.482
+-->
+<currency
+  isocode="PTE"
+  fullname="Portuguese Escudo"
+  unitname="escudo"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="620"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$"
+/>
+<!-- "PYG" - "Guarani"
+  scheduled revaluation 2011
+-->
+<currency
+  isocode="PYG"
+  fullname="Guarani"
+  unitname="guarani"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="600"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₲"
+/>
+<!-- "QAR" - "Qatari Rial"
+-->
+<currency
+  isocode="QAR"
+  fullname="Qatari Rial"
+  unitname="rial"
+  partname="dirham"
+  namespace="ISO4217"
+  exchange-code="634"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="ر.ق"
+/>
+<!-- "ROL" - "Romanian Old Leu"
+  2005-07-01 "RON" 10000
+-->
+<currency
+  isocode="ROL"
+  fullname="Romanian Old Leu"
+  unitname="leu"
+  partname="ban"
+  namespace="ISO4217"
+  exchange-code="642"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "RON" - "New Leu"
+  scheduled 2012..14: EUR
+-->
+<currency
+  isocode="RON"
+  fullname="New Leu"
+  unitname="leu"
+  partname="ban"
+  namespace="ISO4217"
+  exchange-code="946"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "RSD" - "Serbian Dinar"
+-->
+<currency
+  isocode="RSD"
+  fullname="Serbian Dinar"
+  unitname="dinar"
+  partname="para"
+  namespace="ISO4217"
+  exchange-code="941"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "RUB" - "Russian Rouble"
+  RUR: 1998-01-1 "RUB" 1000; see bug #393185
+-->
+<currency
+  isocode="RUB"
+  fullname="Russian Rouble"
+  unitname="rouble"
+  partname="kopek"
+  namespace="ISO4217"
+  exchange-code="643"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="руб"
+/>
+<!-- "RWF" - "Rwanda Franc"
+-->
+<currency
+  isocode="RWF"
+  fullname="Rwanda Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="646"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="RF"
+/>
+<!-- "SAR" - "Saudi Riyal"
+-->
+<currency
+  isocode="SAR"
+  fullname="Saudi Riyal"
+  unitname="riyal"
+  partname="halala"
+  namespace="ISO4217"
+  exchange-code="682"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="ر.س"
+/>
+<!-- "SBD" - "Solomon Islands Dollar"
+-->
+<currency
+  isocode="SBD"
+  fullname="Solomon Islands Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="090"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="SI$"
+/>
+<!-- "SCR" - "Seychelles Rupee"
+-->
+<currency
+  isocode="SCR"
+  fullname="Seychelles Rupee"
+  unitname="rupee"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="690"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="SR"
+/>
+<!-- "SDD" - "Sudanese Dinar"
+  2007-07-01 "SDG" 100, reunite with South
+-->
+<currency
+  isocode="SDD"
+  fullname="Sudanese Dinar"
+  unitname="dinar"
+  partname="piastre"
+  namespace="ISO4217"
+  exchange-code="736"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SDG" - "Sudanese Pound"
+-->
+<currency
+  isocode="SDG"
+  fullname="Sudanese Pound"
+  unitname="pound"
+  partname="qirsh"
+  namespace="ISO4217"
+  exchange-code="938"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SDP" - "Sudanese Pound"
+  1992-01-01 "SDD" 10, but only in the North
+-->
+<currency
+  isocode="SDP"
+  fullname="Sudanese Pound"
+  unitname="pound"
+  partname="piastre"
+  namespace="ISO4217"
+  exchange-code="736"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SEK" - "Swedish Krona"
+-->
+<currency
+  isocode="SEK"
+  fullname="Swedish Krona"
+  unitname="krona"
+  partname="ore"
+  namespace="ISO4217"
+  exchange-code="752"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="kr"
+/>
+<!-- "SGD" - "Singapore Dollar"
+-->
+<currency
+  isocode="SGD"
+  fullname="Singapore Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="702"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="S$"
+/>
+<!-- "SHP" - "Saint Helena Pound"
+-->
+<currency
+  isocode="SHP"
+  fullname="Saint Helena Pound"
+  unitname="pound"
+  partname="penny"
+  namespace="ISO4217"
+  exchange-code="654"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="£"
+/>
+<!-- "SIT" - "Slovenian Tolar"
+  2007-01-01 "EUR" 239.640
+-->
+<currency
+  isocode="SIT"
+  fullname="Slovenian Tolar"
+  unitname="tolar"
+  partname="stotin"
+  namespace="ISO4217"
+  exchange-code="705"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SKK" - "Slovak Koruna"
+  2009-01-01 "EUR" 30.126
+-->
+<currency
+  isocode="SKK"
+  fullname="Slovak Koruna"
+  unitname="koruna"
+  partname="halier"
+  namespace="ISO4217"
+  exchange-code="703"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SLL" - "Leone"
+-->
+<currency
+  isocode="SLL"
+  fullname="Leone"
+  unitname="leone"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="694"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Le"
+/>
+<!-- "SOS" - "Somali Shilling"
+-->
+<currency
+  isocode="SOS"
+  fullname="Somali Shilling"
+  unitname="shilling"
+  partname="centisimi"
+  namespace="ISO4217"
+  exchange-code="706"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="SoSh"
+/>
+<!-- "SRD" - "Surinam Dollar"
+-->
+<currency
+  isocode="SRD"
+  fullname="Surinam Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="968"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$"
+/>
+<!-- "SRG" - "Suriname Guilder"
+  2004-01-01 "SRD" 1000
+-->
+<currency
+  isocode="SRG"
+  fullname="Suriname Guilder"
+  unitname="guilder"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="740"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "STD" - "Dobra"
+-->
+<currency
+  isocode="STD"
+  fullname="Dobra"
+  unitname="dobra"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="678"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Db"
+/>
+<!-- "SVC" - "El Salvador Colon"
+  2001-01-01 "USD" 8.75
+-->
+<currency
+  isocode="SVC"
+  fullname="El Salvador Colon"
+  unitname="colon"
+  partname="centavo"
+  namespace="ISO4217"
+  exchange-code="222"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SYP" - "Syrian Pound"
+-->
+<currency
+  isocode="SYP"
+  fullname="Syrian Pound"
+  unitname="pound"
+  partname="qirsh"
+  namespace="ISO4217"
+  exchange-code="760"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "SZL" - "Lilangeni"
+-->
+<currency
+  isocode="SZL"
+  fullname="Lilangeni"
+  unitname="lilangeni"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="748"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="L"
+/>
+<!-- "THB" - "Baht"
+-->
+<currency
+  isocode="THB"
+  fullname="Baht"
+  unitname="baht"
+  partname="satang"
+  namespace="ISO4217"
+  exchange-code="764"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="฿"
+/>
+<!-- "TJR" - "Tajik Rouble"
+  2002-11-01 "TJS" 1000
+-->
+<currency
+  isocode="TJR"
+  fullname="Tajik Rouble"
+  unitname="ruble"
+  partname="ruble"
+  namespace="ISO4217"
+  exchange-code="762"
+  parts-per-unit="1"
+  smallest-fraction="1"
+  local-symbol=""
+/>
+<!-- "TJS" - "Somoni"
+-->
+<currency
+  isocode="TJS"
+  fullname="Somoni"
+  unitname="somoni"
+  partname="diram"
+  namespace="ISO4217"
+  exchange-code="972"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "TMM" - "Manat"
+  2009-01-01 "TMT" 5000
+-->
+<currency
+  isocode="TMM"
+  fullname="Manat"
+  unitname="manat"
+  partname="tenga"
+  namespace="ISO4217"
+  exchange-code="795"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "TMT" - "Manat"
+-->
+<currency
+  isocode="TMT"
+  fullname="Manat"
+  unitname="manat"
+  partname="teňňe"
+  namespace="ISO4217"
+  exchange-code="934"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="m"
+/>
+<!-- "TND" - "Tunisian Dinar"
+-->
+<currency
+  isocode="TND"
+  fullname="Tunisian Dinar"
+  unitname="dinar"
+  partname="milim"
+  namespace="ISO4217"
+  exchange-code="788"
+  parts-per-unit="1000"
+  smallest-fraction="1000"
+  local-symbol="د.ت"
+/>
+<!-- "TOP" - "Pa'anga"
+-->
+<currency
+  isocode="TOP"
+  fullname="Pa'anga"
+  unitname="Pa'anga"
+  partname="seniti"
+  namespace="ISO4217"
+  exchange-code="776"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="T$"
+/>
+<!-- "TRY" - "Turkish Lira"
+-->
+<currency
+  isocode="TRY"
+  fullname="Turkish Lira"
+  unitname="lira"
+  partname="kuruÅŸ"
+  namespace="ISO4217"
+  exchange-code="949"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="₤"
+/>
+<!-- "TTD" - "Trinidad and Tobago Dollar"
+-->
+<currency
+  isocode="TTD"
+  fullname="Trinidad and Tobago Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="780"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="TT$"
+/>
+<!-- "TWD" - "New Taiwan Dollar"
+-->
+<currency
+  isocode="TWD"
+  fullname="New Taiwan Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="901"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="NT$"
+/>
+<!-- "TZS" - "Tanzanian Shilling"
+-->
+<currency
+  isocode="TZS"
+  fullname="Tanzanian Shilling"
+  unitname="shilling"
+  partname="senti"
+  namespace="ISO4217"
+  exchange-code="834"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="/"
+/>
+<!-- "UAH" - "Hryvnia"
+-->
+<currency
+  isocode="UAH"
+  fullname="Hryvnia"
+  unitname="hryvnia"
+  partname="kopiyka"
+  namespace="ISO4217"
+  exchange-code="980"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚´"
+/>
+<!-- "UGX" - "Uganda Shilling"
+-->
+<currency
+  isocode="UGX"
+  fullname="Uganda Shilling"
+  unitname="shilling"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="800"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="USh"
+/>
+<!-- "USD" - "US Dollar"
+-->
+<currency
+  isocode="USD"
+  fullname="US Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="840"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$"
+/>
+<!-- "USN" - "US Dollar (Next day)"
+  funds code
+-->
+<currency
+  isocode="USN"
+  fullname="US Dollar (Next day)"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="997"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$n"
+/>
+<!-- "USS" - "US Dollar (Same day)"
+  funds code
+-->
+<currency
+  isocode="USS"
+  fullname="US Dollar (Same day)"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="998"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$s"
+/>
+<!-- "UYI" - "Uruguay Peso en Unidades Indexadas"
+-->
+<currency
+  isocode="UYI"
+  fullname="Uruguay Peso en Unidades Indexadas"
+  unitname="UI"
+  partname="centesimo"
+  namespace="ISO4217"
+  exchange-code="940"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="UI"
+/>
+<!-- "UYU" - "Peso Uruguayo"
+-->
+<currency
+  isocode="UYU"
+  fullname="Peso Uruguayo"
+  unitname="peso"
+  partname="centesimo"
+  namespace="ISO4217"
+  exchange-code="858"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="$U"
+/>
+<!-- "UZS" - "Uzbekistan Sum"
+-->
+<currency
+  isocode="UZS"
+  fullname="Uzbekistan Sum"
+  unitname="so‘m"
+  partname="tiyin"
+  namespace="ISO4217"
+  exchange-code="860"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="som"
+/>
+<!-- "VEB" - "Venezuela Bolívar"
+  2008-01-01 "VEF" 1000
+-->
+<currency
+  isocode="VEB"
+  fullname="Venezuela Bolívar"
+  unitname="bolivar"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="862"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "VEF" - "Bolivar Fuerte"
+-->
+<currency
+  isocode="VEF"
+  fullname="Bolivar Fuerte"
+  unitname="bolivar"
+  partname="centimo"
+  namespace="ISO4217"
+  exchange-code="937"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Bs."
+/>
+<!-- "VND" - "Dong"
+-->
+<currency
+  isocode="VND"
+  fullname="Dong"
+  unitname="đồng"
+  partname="xu"
+  namespace="ISO4217"
+  exchange-code="704"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="â‚«"
+/>
+<!-- "VUV" - "Vatu"
+-->
+<currency
+  isocode="VUV"
+  fullname="Vatu"
+  unitname="vatu"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="548"
+  parts-per-unit="1"
+  smallest-fraction="1"
+  local-symbol="Vt"
+/>
+<!-- "WST" - "Tala"
+-->
+<currency
+  isocode="WST"
+  fullname="Tala"
+  unitname="tala"
+  partname="sene"
+  namespace="ISO4217"
+  exchange-code="882"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="WS$"
+/>
+<!-- "YER" - "Yemeni Rial"
+-->
+<currency
+  isocode="YER"
+  fullname="Yemeni Rial"
+  unitname="riyal"
+  partname="fils"
+  namespace="ISO4217"
+  exchange-code="886"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Rl"
+/>
+<!-- "YUM" - "Yugoslavian Dinar"
+  2003 replaced by RSD 1
+-->
+<currency
+  isocode="YUM"
+  fullname="Yugoslavian Dinar"
+  unitname="dinar"
+  partname="para"
+  namespace="ISO4217"
+  exchange-code="890"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "ZAR" - "Rand"
+-->
+<currency
+  isocode="ZAR"
+  fullname="Rand"
+  unitname="rand"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="710"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="R"
+/>
+<!-- "ZMK" - "Kwacha (old)"
+  replaced by ZMW from 2013-01-01 onwards
+-->
+<currency
+  isocode="ZMK"
+  fullname="Kwacha (old)"
+  unitname="kwacha"
+  partname="ngwee"
+  namespace="ISO4217"
+  exchange-code="894"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="ZK"
+/>
+<!-- "ZMW" - "Zambian Kwacha"
+  replaced ZMK from 2013-01-01 onwards
+-->
+<currency
+  isocode="ZMW"
+  fullname="Zambian Kwacha"
+  unitname="kwacha"
+  partname="ngwee"
+  namespace="ISO4217"
+  exchange-code="967"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="ZK"
+/>
+<!-- "ZWD" - "Zimbabwe Dollar"
+  2006-08-01 "ZWN" 1000, 2008-08-01 "ZWR" 10000000000, 2009-02-01 "ZWD" 1000000000000
+-->
+<currency
+  isocode="ZWD"
+  fullname="Zimbabwe Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="716"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "ZWL" - "Zimbabwe Dollar"
+  2009-04 suspended for at least 1 year
+-->
+<currency
+  isocode="ZWL"
+  fullname="Zimbabwe Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="716"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="Z.$"
+/>
+
+<!-- multinational -->
+<!-- "XAF" - "CFA Franc BEAC"
+  Banque des États de l'Afrique Centrale
+-->
+<currency
+  isocode="XAF"
+  fullname="CFA Franc BEAC"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="950"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- XB* should be replaced by EUR, if I am right -->
+<!-- "XCD" - "East Caribbean Dollar"
+  Organisation of Eastern Caribbean States
+-->
+<currency
+  isocode="XCD"
+  fullname="East Caribbean Dollar"
+  unitname="dollar"
+  partname="cent"
+  namespace="ISO4217"
+  exchange-code="951"
+  parts-per-unit="100"
+  smallest-fraction="100"
+  local-symbol="EC$"
+/>
+<!-- "XDR" - "SDR"
+  International Monetary Funds Special Drawing Rights
+-->
+<currency
+  isocode="XDR"
+  fullname="SDR"
+  unitname="SDR"
+  partname="SDR"
+  namespace="ISO4217"
+  exchange-code="960"
+  parts-per-unit="1"
+  smallest-fraction="1"
+  local-symbol=""
+/>
+<!-- "XFO" - "Gold-Franc"
+  Bank for International Settlements
+-->
+<currency
+  isocode="XFO"
+  fullname="Gold-Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="nil"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "XFU" - "UIC-Franc"
+  Union Internationale des Chemins de fer
+-->
+<currency
+  isocode="XFU"
+  fullname="UIC-Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="nil"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "XOF" - "CFA Franc BCEAO"
+  Banque Centrale des États de l'Afrique de l'Ouest
+-->
+<currency
+  isocode="XOF"
+  fullname="CFA Franc BCEAO"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="952"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "XPF" - "CFP Franc"
+  Communauté Financière du Pacifique
+-->
+<currency
+  isocode="XPF"
+  fullname="CFP Franc"
+  unitname="franc"
+  partname="centime"
+  namespace="ISO4217"
+  exchange-code="953"
+  parts-per-unit="1"
+  smallest-fraction="100"
+  local-symbol=""
+/>
+<!-- "XTS" - "Code for testing purposes"
+  Code reserved for testing purposes
+-->
+<currency
+  isocode="XTS"
+  fullname="Code for testing purposes"
+  unitname="TEST"
+  partname="test"
+  namespace="ISO4217"
+  exchange-code="963"
+  parts-per-unit="1"
+  smallest-fraction="1000000"
+  local-symbol=""
+/>
+<!-- "XXX" - "No currency"
+-->
+<currency
+  isocode="XXX"
+  fullname="No currency"
+  unitname=""
+  partname=""
+  namespace="ISO4217"
+  exchange-code="999"
+  parts-per-unit="1"
+  smallest-fraction="1000000"
+  local-symbol=""
+/>
+
+<!-- precious metals -->
+<!-- "XAG" - "Silver"
+-->
+<currency
+  isocode="XAG"
+  fullname="Silver"
+  unitname="ounce"
+  partname="ounce"
+  namespace="ISO4217"
+  exchange-code="961"
+  parts-per-unit="1"
+  smallest-fraction="1000000"
+  local-symbol=""
+/>
+<!-- "XAU" - "Gold"
+-->
+<currency
+  isocode="XAU"
+  fullname="Gold"
+  unitname="ounce"
+  partname="ounce"
+  namespace="ISO4217"
+  exchange-code="959"
+  parts-per-unit="1"
+  smallest-fraction="1000000"
+  local-symbol=""
+/>
+<!-- "XPD" - "Palladium"
+-->
+<currency
+  isocode="XPD"
+  fullname="Palladium"
+  unitname="ounce"
+  partname="ounce"
+  namespace="ISO4217"
+  exchange-code="964"
+  parts-per-unit="1"
+  smallest-fraction="1000000"
+  local-symbol=""
+/>
+<!-- "XPT" - "Platinum"
+-->
+<currency
+  isocode="XPT"
+  fullname="Platinum"
+  unitname="ounce"
+  partname="ounce"
+  namespace="ISO4217"
+  exchange-code="962"
+  parts-per-unit="1"
+  smallest-fraction="1000000"
+  local-symbol=""
+/>
+</currencylist>
\ No newline at end of file
diff --git a/src/engine/iso-currencies-to-c.in b/src/engine/iso-currencies-to-c.in
deleted file mode 100755
index e8dd400..0000000
--- a/src/engine/iso-currencies-to-c.in
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/bin/sh
-exec @GUILE@ -s $0 "$@"
-!#
-
-(if (< (length (command-line)) 2)
-    (begin
-      (display "Missing command line argument \"source directory\"")
-      (exit 1)))
-
-(define *srcdir* (list-ref (command-line) 1))
-(define *currency-file* (string-append *srcdir* "/" "iso-4217-currencies.scm"))
-(define *c-file-name* "iso-4217-currencies.c")
-
-(define (generate-currency-c-code form output-port)
-  ;; Check for correct number of arguments
-  (if (and (list? form)
-	   (eq? 9 (length form)))
-      ;; Assign arguments
-      (let ((fullname (list-ref form 0))
-	    (unitname (list-ref form 1))
-	    (partname (list-ref form 2))
-	    (namespace (list-ref form 3))
-	    (mnemonic (list-ref form 4))
-	    (exchange-code (list-ref form 5))
-	    (parts-per-unit (list-ref form 6))
-	    (smallest-fraction (list-ref form 7))
-	    (local-symbol (list-ref form 8)))
-	;; Check for correct types of arguments
-	(if (and (string? fullname)
-		 (string? unitname)
-		 (string? partname)
-		 (string? namespace)
-		 (string? mnemonic)
-		 (string? exchange-code)
-		 (number? parts-per-unit)
-		 (number? smallest-fraction)
-		 (string? local-symbol))
-
-	    ;; And print the output line
-	    (format
-	     output-port "
-  {
-    const char *fullname = ~S;
-    gnc_commodity *c = gnc_commodity_new(book,
-					 CUR_I18N(fullname),
-                                         ~S,
-                                         ~S,
-                                         ~S,
-                                         ~S);\n
-    if(!c) {
-      PWARN(\"failed to create commodity for currency %s\", fullname);
-    } else {
-      if(!gnc_commodity_table_insert(table, c)) {
-        PWARN(\"failed to insert %s into commodity table\", fullname);
-      }
-    }
-    gnc_commodity_set_default_symbol(c, ~S);
-  }\n"
-	     fullname
-	     namespace
-	     mnemonic
-	     exchange-code
-	     smallest-fraction
-	     local-symbol)
-
-	    ;; Sorry, code doubling of the error message, but whatever.
-	    (begin
-	      (display "Bad currency data (wrong column data) at line: ")
-	      (display form)
-	      (newline)
-	      #f)))
-
-      (begin
-        (display "Bad currency data (wrong number of columns) at line: ")
-        (display form)
-        (newline)
-        #f)))
-
-(define (generate-currencies-c-code)
-  (call-with-input-file *currency-file*
-    (lambda (input-port)
-      (call-with-output-file *c-file-name*
-        (lambda (output-port)
-          (let loop ((form (read input-port)))
-            (if (eof-object? form)
-                #t
-                (if (generate-currency-c-code form output-port)
-                    (loop (read input-port))
-                    #f))))))))
-
-(if (not (generate-currencies-c-code))
-    (begin
-      (display "Unable to generate iso-4217 currency C code.\n")
-      (exit 1))
-    (exit 0))
-
-;; Local Variables:
-;; mode: scheme
-;; End:
diff --git a/src/engine/iso-currencies-to-c.xsl b/src/engine/iso-currencies-to-c.xsl
new file mode 100644
index 0000000..defeafa
--- /dev/null
+++ b/src/engine/iso-currencies-to-c.xsl
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text" encoding="UTF8"/>
+
+<xsl:template match="/">
+/********************************************************************\
+ * iso-4217-currencies.c -- list of currencies gnucash understands  *
+ *                                                                  *
+ * ATTENTION: this file is autogenerated based on                   *
+ *            iso-4217-currencies.xml                               *
+ *                                                                  *
+ * If you need any modifications in this file, please update the    *
+ * xml source file (or the xsl translation file depending on the    *
+ * kind of change required) instead.                                *
+ *                                                                  *
+ * Copyright (C) 2015 Geert Janssens <geert at kobaltwit.be>           *
+ *                                                                  *
+ * This program is free software; you can redistribute it and/or    *
+ * modify it under the terms of the GNU General Public License as   *
+ * published by the Free Software Foundation; either version 2 of   *
+ * the License, or (at your option) any later version.              *
+ *                                                                  *
+ * This program is distributed in the hope that it will be useful,  *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of   *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
+ * GNU General Public License for more details.                     *
+ *                                                                  *
+ * You should have received a copy of the GNU General Public License*
+ * along with this program; if not, contact:                        *
+ *                                                                  *
+ * Free Software Foundation           Voice:  +1-617-542-5942       *
+ * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652       *
+ * Boston, MA  02110-1301,  USA       gnu at gnu.org                   *
+ *                                                                  *
+\********************************************************************/
+
+<xsl:for-each select="//currency">
+  {
+    const char *fullname = "<xsl:value-of select="@fullname"/>";
+    gnc_commodity *c = gnc_commodity_new(book,
+                                         CUR_I18N(fullname),
+                                         "<xsl:value-of select="@namespace"/>",
+                                         "<xsl:value-of select="@isocode"/>",
+                                         "<xsl:value-of select="@exchange-code"/>",
+                                         <xsl:value-of select="@smallest-fraction"/>);
+    if(!c) {
+      PWARN("failed to create commodity for currency %s", fullname);
+    } else {
+      if(!gnc_commodity_table_insert(table, c)) {
+        PWARN("failed to insert %s into commodity table", fullname);
+      }
+    }
+    gnc_commodity_set_default_symbol(c, "<xsl:value-of select="@local-symbol"/>");
+  }
+</xsl:for-each>
+</xsl:template>
+</xsl:stylesheet>



Summary of changes:
 configure.ac                                       |    2 -
 src/Makefile.am                                    |    4 +-
 src/app-utils/Makefile.am                          |    2 +-
 src/app-utils/test/Makefile.am                     |    2 +-
 src/backend/dbi/test/Makefile.am                   |    2 +-
 src/backend/sql/test/Makefile.am                   |    2 +-
 src/backend/xml/test/Makefile.am                   |    2 +-
 src/bin/overrides/gnucash-build-env.in             |    2 +-
 src/business/business-gnome/Makefile.am            |    2 +-
 src/core-utils/Makefile.am                         |    2 +-
 src/core-utils/test/Makefile.am                    |    2 +-
 src/engine/Makefile.am                             |   18 +-
 src/engine/iso-4217-currencies.scm                 |  253 --
 src/engine/iso-4217-currencies.xml                 | 3009 ++++++++++++++++++++
 src/engine/iso-currencies-to-c.in                  |   99 -
 .../iso-currencies-to-c.xsl}                       |   51 +-
 src/engine/test/Makefile.am                        |    2 +-
 src/gnc-module/Makefile.am                         |    2 +-
 src/gnc-module/test/Makefile.am                    |    2 +-
 src/gnc-test-env.in                                |  139 -
 src/gnc-test-env.pl                                |   61 +
 src/gnome-utils/Makefile.am                        |    2 +-
 src/gnome-utils/test/Makefile.am                   |    2 +-
 src/import-export/qif-imp/Makefile.am              |    2 +-
 src/import-export/qif/test/Makefile.am             |    2 +-
 src/import-export/test/Makefile.am                 |    2 +-
 src/optional/python-bindings/tests/Makefile.am     |    2 +-
 src/register/register-core/test/Makefile.am        |    2 +-
 src/register/register-gnome/test/Makefile.am       |    2 +-
 src/report/business-reports/Makefile.am            |    2 +-
 src/report/locale-specific/us/Makefile.am          |    2 +-
 src/report/locale-specific/us/test/Makefile.am     |    2 +-
 src/report/report-gnome/Makefile.am                |    2 +-
 src/report/report-gnome/test/Makefile.am           |    2 +-
 src/report/report-system/Makefile.am               |    2 +-
 src/report/report-system/test/Makefile.am          |    2 +-
 src/report/standard-reports/Makefile.am            |    2 +-
 src/report/standard-reports/test/Makefile.am       |    2 +-
 src/report/stylesheets/Makefile.am                 |    2 +-
 src/report/stylesheets/test/Makefile.am            |    2 +-
 src/report/utility-reports/Makefile.am             |    2 +-
 src/report/utility-reports/test/Makefile.am        |    2 +-
 src/scm/Makefile.am                                |    2 +-
 src/tax/us/Makefile.am                             |    2 +-
 src/tax/us/test/Makefile.am                        |    2 +-
 src/test-core/Makefile.am                          |    2 +-
 46 files changed, 3140 insertions(+), 570 deletions(-)
 delete mode 100644 src/engine/iso-4217-currencies.scm
 create mode 100644 src/engine/iso-4217-currencies.xml
 delete mode 100755 src/engine/iso-currencies-to-c.in
 copy src/{gnome-utils/make-gnc-warnings-c.xsl => engine/iso-currencies-to-c.xsl} (62%)
 delete mode 100755 src/gnc-test-env.in
 create mode 100755 src/gnc-test-env.pl



More information about the gnucash-changes mailing list