cmd.cにある。

#if 0 /*JP*/
#define enl_msg(prefix, present, past, suffix, ps) \
    enlght_line(prefix, final ? past : present, suffix, ps)
#else
#define enl_msg(prefix, present, past, suffix, ps) \
    enlght_line(prefix, ps, suffix, final ? past : present)
#endif
#define you_are(attr, ps) enl_msg(You_, are, were, attr, ps)
#define you_have(attr, ps) enl_msg(You_, have, had, attr, ps)
#define you_can(attr, ps) enl_msg(You_, can, could, attr, ps)
/*JP
#define you_have_been(goodthing) enl_msg(You_, have_been, were, goodthing, "")
*/
#define you_have_been(goodthing) enl_msg(You_, are, were, goodthing, "")
#if 0 /*JP*/
#define you_have_never(badthing) \
    enl_msg(You_, have_never, never, badthing, "")
#else
#define you_have_never(badthing) \
    enl_msg(badthing, "ていない", "なかった", "", "")
#endif
#if 0 /*JP*/
#define you_have_X(something) \
    enl_msg(You_, have, (const char *) "", something, "")
#else
#define you_have_X(something) \
    enl_msg(something, "ている", "た", "", "")
#endif
#if 1 /*JP*/
#define you_are_ing(goodthing, ps) enl_msg(You_, iru, ita, goodthing, ps)
#endif

enlght_line(start, middle, end, ps)

  • 「(start)(middle)(end)(ps).」

enl_msg(p1, p2, p3, p4, p5)

  • 現在:「(p1)(p5)(p4)(p2).」
  • 過去:「(p1)(p5)(p4)(p3).」

you_are(attr, ps)

  • 現在:「あなたは(ps)(attr)である.」
  • 過去:「あなたは(ps)(attr)であった.」

you_have(attr, ps)

  • 現在:「あなたは(ps)(attr)をもっている.」
  • 過去:「あなたは(ps)(attr)をもっていた.」

you_can(attr, ps)

  • 現在:「あなたは(ps)(attr)できる.」
  • 過去:「あなたは(ps)(attr)できた.」

you_have_been(p1)

  • 現在:「あなたは(p1)である.」
  • 過去:「あなたは(p1)であった.」

you_have_never(p1)

  • 現在:「(p1)ていない.」
  • 過去:「(p1)ていなかった.」

you_have_X(p1)

  • 現在:「(p1)ている.」
  • 過去:「(p1)た.」

you_are_ing(p1, p2)

  • 現在:「あなたは(p2)(p1)いる.」
  • 過去:「あなたは(p2)(p1)いた.」