Yes, you can "trust Varnames to be in the right order."
You can also simplify your program by writing the rownames directly instead of writing two data sets and merging the data:
create cmat from Z [colname=varNames rowname=varNames]; append from Z[rowname=varNames]; close cmat;
... View more