diff --git a/tests/pio_cksum_grb2.run.in b/tests/pio_cksum_grb2.run.in
index cbd6d287a81f4c55b703da93ddbee9373e533bca..09741ee26b7ef517881696f6e3a72ebe26aa62da 100644
--- a/tests/pio_cksum_grb2.run.in
+++ b/tests/pio_cksum_grb2.run.in
@@ -1,4 +1,4 @@
-#!@SHELL@
+#! @SHELL@
 
 suffix=grb2
 pio_write_args="-w 3"
diff --git a/tests/pio_write.run.in b/tests/pio_write.run.in
index bbb0b8a655ae12d26760da591e1e1a4a8fe0f3d7..a59769b4734a2261b923202fc874be21a0fb705e 100644
--- a/tests/pio_write.run.in
+++ b/tests/pio_write.run.in
@@ -1,6 +1,22 @@
-#!@SHELL@
+#! @SHELL@
 
-prefix=`echo "$0" | sed 's@.*/@@'`
+set -e
+case "$0" in
+  */*)
+    prefix=`expr "$0" : '.*/\([^/]*\)$'`
+    ;;
+  *)
+    prefix=$0
+    ;;
+esac
+case x"${CDI_PIO_TEST_DIR+${CDI_PIO_TEST_DIR}}" in
+  x)
+    :
+    ;;
+  *)
+    prefix="${CDI_PIO_TEST_DIR}/${prefix}"
+    ;;
+esac
 suffix=${suffix-grb}
 
 if ${mpi_task_num+:} false; then
@@ -40,6 +56,9 @@ esac
 
 test_variation ()
 {
+  if prefix_dirname=`expr "$prefix" : '\(.*\)/'` ; then
+    mkdir -p "${prefix_dirname}"
+  fi
   echo "creating data with $1" >&2
   variation=$1
   @top_builddir@/libtool --mode=execute \
@@ -48,15 +67,15 @@ test_variation ()
     ${pio_write_args} -s 7 ${variation} || exit 1
   echo "checking ${prefix}_0.${suffix}" >&2
   @top_builddir@/libtool --mode=execute \
-    ${tool_wrap} ./cksum_read "${prefix}_0.${suffix}" "${prefix}_0.cksum" || exit 1
+    ${tool_wrap} ./cksum_read "${prefix}_0.${suffix}" "${prefix}_0.cksum"
   echo "checking ${prefix}_1.${suffix}" >&2
   @top_builddir@/libtool --mode=execute \
-    ${tool_wrap} ./cksum_read "${prefix}_1.${suffix}" "${prefix}_1.cksum" || exit 1
+    ${tool_wrap} ./cksum_read "${prefix}_1.${suffix}" "${prefix}_1.cksum"
 }
 
 eval "set dummy $variations"; shift
 for variation in "$@"; do
-  test_variation "$variation" || exit 1
+  test_variation "$variation"
 done
 #
 # Local Variables:
diff --git a/tests/pio_write_dist_array.run.in b/tests/pio_write_dist_array.run.in
index 71d5f893423f8233d3fa3a4bd41a74af2a466dc3..25bf3bed97faf30e86ebcd117dc104c13694a68c 100644
--- a/tests/pio_write_dist_array.run.in
+++ b/tests/pio_write_dist_array.run.in
@@ -1,4 +1,4 @@
-#!@SHELL@
+#! @SHELL@
 test 'x@HAVE_PPM_DIST_ARRAY@' = xyes || exit 77
 
 mpi_task_num=${mpi_task_num-4}