I'm glad you got it working.
Traditionally, in my code I just distinguish between V and not V; V because of the RDW. I use DCBLRECL for U and F. Actually, I got to thinking, does IBM set DCBLRECL for V? I've always assumed not, and always used the record length in the RDW. So earlier today I cracked open the manuals, and I got a mixed impression. I then wrote up a very simple tester and ran it. In the limited testing I did, one VB data set and another VBS data set, and in both data sets DCBLRECL was always set to the RDW value after the GET macro, so it would seem DCBLRECL is safe.
In my code, I usually use AL1 rather than B for something like your WKRECFM, in part because RECFM is built up using values; like AL1(DCBRECF+DCBRECBR+DCBRECCA) (for FBA). Your using B is fine since you're not really initializing the data area with constants; you're copying a RECFM value to it. This is something Assembler programmers chew over endlessly, in part because there's no "right" way to do it.
I presume you set A2730_RECFM to V or F as required.