Abstract: QMMM is a computer program for performing geometry optimizations and calculating single-point energies, gradients, and/or Hessians using combined quantum mechanics (QM) and molecular mechanics (MM) methods. The boundary between the QM and MM regions can be treated by a number of schemes, including the redistributed charge (RC) scheme, the redistributed charge and dipole (RCD) schemes, the polarized- boundary RC (PBRC) scheme, and the polarized-boundary RCD (PBRCD) scheme. All of these schemes use link atoms to saturate the dangling bonds (if any) for the QM subsystem, and they use redistributed MM point charges to mimic a hybrid orbital on the MM host atom (called the M1 atom) that is replaced by the link atom. In the RCD treatment, the value of the redistributed charge and the value of the charge on the M2 atom, i.e., the MM atom that is directly bonded to the M1 atom, are further modified to preserve the M1-M2 bond dipole. The PBRC and PBRCD schemes are further developments of the RC and RCD schemes. The PBRC and PBRCD schemes account for the polarization of the MM subsystem due to the QM subsystem near the boundary; the polarization of the MM subsystem is realized by adjusting the secondary-subsystem atomic partial charges in the embedded-QM calculations according to the principle of electronegativity equalization and the principle of charge conservation. Some other schemes used for QM/MM boundary treatments are also implemented; in particular, we implement the original integrated molecular-orbital molecular-mechanics (IMOMM, also known as the mechanical embedding scheme, ME), the straight electrostatic embedding (SEE) scheme, three eliminated-charge schemes, and the shifted-charge scheme. In addition to the above-mentioned mechanical and electrostatic embedding schemes, a so-called flexible-boundary embedding scheme is also implemented for QM/MM calculations where the QM and MM subsystems do not covalently bonded to each other; the flexible-boundary scheme accounts for the partial charge transfer between the QM and MM subsystems. QMMM calls a QM package and an MM package to perform required singlelevel calculations. The package was tested with GAMESS, Gaussian03, and ORCA for the QM package and TINKER for the MM package; it contains 129 sample runs that can be used to learn and test the program.