I was mistaken in asserting that DCLEN produced an incorrect result. Consider
&A SETA DCLEN('''''') MNOTE *,'&A' This will show that &A has value 1, as noted in the original posting. The reason is that (1) the enclosing apostrophes of the argument string are removed and (2) the interior apostrophes are paired before presentation to DCLEN, so (3) its true argument is just a pair of apostrophes. When that pair substituted into a C-type DC statement, that pair will result in a single byte, hence (4) the length 1. John Ehrman