I have defined a datetime format with `%h %0M %0S` , but when it executes within my macro, the hour part is left out. Below is the (unedited) log from a stripped down macro using option mprint to demonstrate the issue. 

Notice at the top of the log, where my macro is reprinted, the format my\_fmt includes a "%h" ... but then below in the log when my\_fmt is referenced, it is printed without "%h" in it, and then outputs a string with the hour part missing. I've tried with several different format names (including a random string) as well to make sure it's not conflicting with a pre-existing format. (using SAS 9.4 in case that matters).

```
18486  %macro myMacro(mydt);
18487
18488  %put &mydt;
18489  proc format; picture my_fmt low-high = "%0d-%b-%Y %h:%0M:%0S" (datatype=datetime); quit;
18490
18491      %*Comment;
18492      %let startDT_fmtd = %sysfunc(putn(&mydt, my_fmt.));
18493      %put &startDT_fmtd;
18494  %mend;
18495
18496  %*Useage example;
18497  %myMacro(1738144208.3);

1738144208.3
MPRINT(MYMACRO):   proc format;
WARNING: Apparent invocation of macro B not resolved.
WARNING: Apparent invocation of macro Y not resolved.
MPRINT(MYMACRO):   picture my_fmt low-high = "%0d-%b-%Y %0M:%0S" (datatype=datetime);
NOTE: Format MY_FMT has been output.
MPRINT(MYMACRO):   quit;

NOTE: PROCEDURE FORMAT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

29-JAN-2015 50:08

```