as posted on stackoverflow:

for details see Class %ZEN.Component.dateText

setting format:
Property format As %ZEN.Datatype.string(MAXLEN = 3, VALUELIST = ",MDY,DMY,YMD", ZENEXPRESSION = 1)
you have exactly 3 formats or "" 

Your guess on values is correct and documented:   
/// The value of this control is always in the canonical form: YYYY-MM-DD

As this is one of the oldest components of ZEN your only chance to achieve
your way of operation is to create your own version inheriting from
Class %ZEN.Component.dateText and overloading the parts you want to change

OK!  you talk about a local variable array
If you don't pass the local array with the JOB command it is not defined in the new JOB
because it is LOCAL   
except if you run  the 2 SET commands of your example also in the JOBbed routine.
also your WRITE command will fail if you don't specify some output device.
since by definition a background JOB doesn't have foreground output.

You might be able to achieve the first part of your description by some tricky JOIN constructs.
Just access to a non-existing column will fail at generating the Query.
Cascading might be easier (also for maintenance)  by filling a TempTable over several cycles
and so assemble the final result.

I would suggest to create a ClassMethod projected to SQL as Stored Procedure.
then instead of the trick with the switch you just provide the parameters that you really have