Reading compound datasets recursively

No problem. In this particular example,

DATATYPE H5T_COMPOUND {
    H5T_STRING {
        STRSIZE 16;
        STRPAD H5T_STR_NULLTERM;
        CSET H5T_CSET_ASCII;
        CTYPE H5T_C_S1; } "Name";
    ...
}

you are looking at a fixed-length string (STRSIZE 16).

I cannot recommend using H5Tequal to determine whether you are dealing with a variable-length string,
because it might give you false negatives. (There is more than one variable-length string datatype!) The function to use is H5Tis_variable_str (after determining the datatype class).

G.