Either I had been out in the sun too long before my response earlier today, or I've been on the road too long now. But if I'm not mistaken, isn't it working the way it is
documented . The output for the test program is:
Built String:20,30
TRIM Value:20,30
TRIM Value, 1:0,0
So in other words, with a string consisting of two control characters (chr(20) plus a chr(30))...
XCALL TRIM, build'string$ leaves it alone (since in that mode, it should only remove spaces).
XCALL TRIM, build'string, 1 however teats the control characters the same as if they were spaces, i.e. removes them.
Note that in 1754.0, the rewrite of STRIP and TRIM did result in a bug like the one you describe. But I think it was fixed in 1754.1. Perhaps there was some mixup and it crept back in to 1756.2, but it seems to be working as documented in the latest, 7.0.1757.1, which you can download from the following:
ash-7.0.1757.1-el7-upd.tzash70notes.txt