By providing a macro facility, languages such as Scheme and Common Lisp allow users to define new special forms as local, syntactic program transformations. This allows users to abstract away what would otherwise be repetitive or cumbersome syntax. One limitation to the power of macro facilities is that only textual local transformations can be defined -- the user cannot, for example, define a delay macro which automatically inserts calls to force at all required points in the program. In this paper, we present a new kind of macro, called a data path macro, in which transformations can take place at any point along the dataflow path that includes the macro invocation. The heart of the data path macro facility is a dataflow analysis mechanis...