  Binary optimal codes often contain optimal or near-optimal subcodes. In this
paper we show that this is true for the family of self-dual codes. One approach
is to compute the optimum distance profiles (ODPs) of linear codes, which was
introduced by Luo, et. al. (2010). One of our main results is the development
of general algorithms, called the Chain Algorithms, for finding ODPs of linear
codes. Then we determine the ODPs for the Type II codes of lengths up to 24 and
the extremal Type II codes of length 32, give a partial result of the ODP of
the extended quadratic residue code $q_{48}$ of length 48. We also show that
there does not exist a $[48,k,16]$ subcode of $q_{48}$ for $k \ge 17$, and we
find a first example of a doubly-even self-complementary $[48, 16, 16]$ code.
